README.md
# rails-env
[![Tests](https://github.com/fnando/rails-env/workflows/ruby-tests/badge.svg)](https://github.com/fnando/rails-env)
[![Code Climate](https://codeclimate.com/github/fnando/rails-env/badges/gpa.svg)](https://codeclimate.com/github/fnando/rails-env)
[![Gem](https://img.shields.io/gem/v/rails-env.svg)](https://rubygems.org/gems/rails-env)
[![Gem](https://img.shields.io/gem/dt/rails-env.svg)](https://rubygems.org/gems/rails-env)
Avoid environment detection on Rails.
## Installation
```bash
gem install rails-env
```
Or add the following line to your project's Gemfile:
```ruby
gem "rails-env"
```
## Usage
Instead of checking for the current environment like this:
```ruby
if Rails.env.production?
# Do something with Rails.configuration
end
```
You can just use:
```ruby
Rails.env.on(:production) do
config.assets.version = '1.0'
end
```
Looks dumb, but you don't have to use the long `Rails.configuration` or assign
it to a local variable. This is useful when you're extracting out things to
initializers.
To match all environments, use `:any`.
```ruby
Rails.env.on(:any) do
config.assets.version = '1.0'
end
```
## Gotcha
Not all options can be defined through `Rails.env`. Rails propagates options on
its engine file, meaning that every option defined on `config` afterwards must
be manually propagated.
It's hard to automatically propagate every existing option, so we have the most
common options covered, as you can see in the list below:
- action_controller
- action_mailer
- action_view
- active_job
- active_record
- time_zone
- auto/eager load paths
- i18n
- hosts
If you need to set any option not covered by rails-env,
[please open a ticket](https://github.com/fnando/rails-env/issues/new).
## Upgrading from previous versions
Previous versions used to yield the configuration; this is no longer true on
1.0+.
So, instead of using
```ruby
Rails.env.on(:development) do |config|
config.assets.version = '1.0'
end
```
use
```ruby
Rails.env.on(:development) do
config.assets.version = '1.0'
end
```
## Maintainer
- [Nando Vieira](https://github.com/fnando)
## Contributors
- https://github.com/fnando/rails-env/contributors
## Contributing
For more details about how to contribute, please read
https://github.com/fnando/rails-env/blob/main/CONTRIBUTING.md.
## License
The gem is available as open source under the terms of the
[MIT License](https://opensource.org/licenses/MIT). A copy of the license can be
found at https://github.com/fnando/rails-env/blob/main/LICENSE.md.
## Code of Conduct
Everyone interacting in the rails-env project's codebases, issue trackers, chat
rooms and mailing lists is expected to follow the
[code of conduct](https://github.com/fnando/rails-env/blob/main/CODE_OF_CONDUCT.md).