https://github.com/customink/is_it_ready
Rails Engine for verifying whether applications are able to serve traffic
https://github.com/customink/is_it_ready
engine health kubernetes probes rails
Last synced: 4 months ago
JSON representation
Rails Engine for verifying whether applications are able to serve traffic
- Host: GitHub
- URL: https://github.com/customink/is_it_ready
- Owner: customink
- License: mit
- Created: 2022-09-14T13:48:32.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-06-17T08:53:43.000Z (about 1 year ago)
- Last Synced: 2025-11-05T12:26:37.177Z (9 months ago)
- Topics: engine, health, kubernetes, probes, rails
- Language: Ruby
- Homepage:
- Size: 45.9 KB
- Stars: 2
- Watchers: 12
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: MIT-LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Is It Ready?
[](https://dl.circleci.com/status-badge/redirect/gh/customink/is_it_ready/tree/main)
[](https://app.opslevel.com/services/is_it_ready/maturity-report)
A Ruby gem that adds a simple Rails engine to your application to see if it's ready to serve requests.
The endpoint and mounting options are configurable using the standard Rails conventions.
This Engine is used by Custom Ink to verify whether their infrastructure is able to serve HTTP requests,
and allows Kubernetes to add/remove applications from the load-balancer based upon the results returned.
## Requirements
* Ruby `>= 2.2.0`
* Ruby on Rails `>= 3.2.22.5`
### Compatibility Matrix
This Matrix provides an overview on which versions of Ruby are tested against which Ruby on Rails versions.
These combinations are guaranteed to work, whereas other combinations might work but are not guaranteed.
| Ruby Version | Rails `~> 3.2` | Rails `~> 4.0` | Rails `~> 4.1` | Rails `~> 4.2` | Rails `~> 5.0` | Rails `~> 5.1` | Rails `~> 5.2` | Rails `~> 6.0` | Rails `~> 6.1` | Rails 7.0.0 | Rails `~> 7.0` |
|--------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|-------------|----------------|
| `2.2` | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ | - | - | - | - |
| `2.3` | - | - | - | - | ☑️ | ☑️ | ☑️ | - | - | - | - | - |
| `2.4` | - | - | - | - | ☑️ | ☑️ | ☑️ | - | - | - | - | - |
| `2.5` | - | - | - | - | - | ☑️ | ☑️ | ☑️ | ☑️ | - | - | - |
| `2.6` | - | - | - | - | - | - | ☑️ | ☑️ | ☑️ | - | - | - |
| `2.7` | - | - | - | - | - | - | - | ☑️ | ☑️ | ☑️ | - |
| `3.0` | - | - | - | - | - | - | - | - | - | ☑️ | - |
| `3.1` | - | - | - | - | - | - | - | - | - | - | ☑️ |
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'is_it_ready', github: 'customink/is_it_ready'
```
And then execute:
```bash
% bundle install
```
## Usage
Simply mount the engine in your `config/routes.rb` and the routes will be available under the given path.
```ruby
Rails.application.routes.draw do
mount IsItReady::Engine => "/is_it_ready"
end
```
With the above snippet, the health check will be available under:
* https://your-domain/is_it_ready
## Configuration
Sometimes additional configuration might be required. For example when the endpoint is reserved in your application
or conflicts with another plugin. In this case, creating an initializer under `config/initializers/is_it_ready.rb` can help.
```ruby
# Initializer example to overwrite specific settings for the gem, or to enable certain features.
#
# Overwrite the endpoint that's used for listening to the required calls from the ReadinessProbe.
# Setting this value, changes the second entry to be the path defined here, as well as the path under which
# the application has been mounted:
# * https://your-domain/something_else
# This is more for cosmetic purposes, or when mountain multiple engines under the same endpoint with distinct routes.
::IsItReady.endpoint = '/something_else'
# Setting the bearer token will protect the endpoint with Basic HTTP Auth.
# When this value is set, every incoming request on this endpoint must provided the
# AUTHORIZATION header with a Bearer or Token associated to it.
# Failure to do so, will return in an HTTP UNAUTHORIZED response.
::IsItReady.bearer_token = 'my-secret-token'
```
## Contributing
1. Fork it (https://github.com/customink/is_it_ready/fork).
2. Run `bin/setup` to ensure your environment is configured for development.
3. Run `bin/test` to ensure all tests pass
4. Create your feature branch: `git checkout -b my-new-feature`
5. Commit your changes: `git commit -am 'Adding a new feature`
6. Push to the branch: `git push origin my-new-feature`
7. Create a new pull request to our repository
## References
* [Rails Engine Guide](https://guides.rubyonrails.org/engines.html)