Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fnando/rails-env
Avoid environment detection on Rails
https://github.com/fnando/rails-env
Last synced: 27 days ago
JSON representation
Avoid environment detection on Rails
- Host: GitHub
- URL: https://github.com/fnando/rails-env
- Owner: fnando
- License: mit
- Created: 2014-12-20T02:29:27.000Z (almost 10 years ago)
- Default Branch: main
- Last Pushed: 2023-09-04T13:13:55.000Z (about 1 year ago)
- Last Synced: 2024-10-06T04:28:55.837Z (about 1 month ago)
- Language: Ruby
- Homepage:
- Size: 63.5 KB
- Stars: 19
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# 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
- hostsIf 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).