rails-env
Avoid environment detection on Rails.
Installation
Add this line to your application's Gemfile:
gem 'rails-env'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rails-env
Usage
Instead of checking for the current environment like this:
if Rails.env.production?
# Do something with Rails.configuration
end
You can just use:
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
.
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 the list below:
- action_controller
- action_mailer
- action_view
- active_job
- active_record
- time_zone
- auto/eager load paths
- i18n
If you need to set any option not covered by rails-env, please open a ticket.
Upgrading from previous versions
Previous versions used to yield the configuration; this is no longer true on 1.0+.
So, instead of using
Rails.env.on(:development) do |config|
config.assets.version = '1.0'
end
use
Rails.env.on(:development) do
config.assets.version = '1.0'
end
Contributing
- Fork it ( https://github.com/fnando/rails-env/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request