crystal-consul
Version, currently 0.1.34 versions
- 0.1.3latestApr 22, 2020
- 0.1.2not indexedApr 22, 2020
- 0.1.1not indexedApr 22, 2020
- 0.1.0not indexedApr 22, 2020
github.com/rogerwelin/crystal-consul
Crystal client for Consul (http://www.consul.io/)
19 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
crystal-consul:
github: rogerwelin/crystal-consul
version: ~> 0.1.3Then run:
shards installshard.yml
- Crystal
0.34.0- License
- MIT
- Author
- Roger Welin <roger.welin@icloud.com>
Dependencies
This version declares no dependencies.
README
# 💎 crystal-consul
[](https://github.com/crystal-lang/crystal)
[](https://travis-ci.org/rogerwelin/crystal-consul)
[](https://github.com/rogerwelin/crystal-consul/releases)
Crystal client for Consul HTTP API. For more information about the Consul HTTP API, go [here](https://www.consul.io/api/index.html).
Crystal-consul does not use any depenencies outside stdlib, hence no transitive dependencies when you include it in your project.
## Installation
1. Add the dependency to your `shard.yml`:
```yaml
dependencies:
crystal-consul:
github: rogerwelin/crystal-consul
```
2. Run `shards install`
## Example Usage
```crystal
require "crystal-consul"
# create a default client
c = Consul.client()
# create a key
c.kv.create_key("stage/service-example/version", "1")
c.kv.create_key("stage/service-example/tag", "master")
# read key
c.kv.get_key("stage/service-example/version")
# Consul::Types::KV::KvPair(@key="stage/service-example/version", @value="1")
# you can also get keys recursively
c.kv.get_key("stage", recurse: true)
# [Consul::Types::KV::KvPair(@key="stage/service-example/tag", @value="master"), Consul::Types::KV::KvPair(@key="stage/service-example/version", @value="1")]
# register a service on the local agent
service = Consul::Service.new()
service.service = "service-example"
service.tags = ["master"]
service.port = 9922
c.agent.register_service(service)
```
For more examples and usage view [the example page](https://github.com/rogerwelin/crystal-consul/blob/master/examples/examples.md)
## Project Status
Implemented endpoints implements all consistency modes, filter options and query parameters as specified by Consul HTTP API doc.
#### Completed
- [x] Agent
- [x] KV Store
- [x] Catalog
- [x] Coordinates
- [x] Events
- [x] Health
- [x] Snapshots
- [x] Status
#### TO-DO
- [ ] ACLs
- [ ] Config
- [ ] Connect
- [ ] Operator
- [ ] Prepared Queries
- [ ] Sessions
- [ ] Transactions
## Testing
Only a working Crystal installation and Docker is required. Project does not use mocks, instead all endpoints are tested against a running Consul docker container.
1. Run ```docker run -d -p 8500:8500 consul:1.5.1```
2. Run ```crystal spec``` from the project root
## Contributing
Pull requests are very much appreciated! When you create a PR please ensure:
* All current tests pass
* To run ```crystal tool format``` on added code
* To add tests for your new features, if applicable
* To add doc comments for new api features you add
1. Fork it (<https://github.com/rogerwelin/crystal-consul/fork>)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [Roger Welin](https://github.com/rogerwelin) - creator and maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.1.3- Tagged
- Apr 22, 2020
- Commit
08b5f1827c75- Crystal
0.34.0- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/rogerwelin/crystal-consul
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 4