fnando/rails-env

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# 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).