Search code examples
ruby-on-railsrubyruby-on-rails-3ruby-on-rails-4ruby-on-rails-3.2

How can I make a custom environment in rails a default environment?


i created a custom staging environment in my rails app by adding new file config/environments/staging.rb, same as config/environments/development.rb and then added database config config/database.yml

staging:
  adapter: sqlite3
  database: db/staging.sqlite3
  pool: 5
  timeout: 5000

now, i want to make staging the default environment of my rails application instead of development.How to achieve it?


Solution

  • Ideally you have to set environment variable in .bashrc like

      export RAILS_ENV=staging
    

    because rails is fully dependent on environment variable. But like you said

    adding RAILS_ENV in ~/.bashrc or ~/.bash_profile file of the user. will make this application depent on the console, shouldn't it just work independent of ~/.bashrc or ~/.bash_profile file?

    Obviously, this is another option. Include this line at the top of config/boot.rb

    ENV["RACK_ENV"] = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "staging"
    

    This will work everywhere. I have tested in following places

    1. Rails 4
    2. Rake
    3. Server
    4. Console
    5. dbconsole
    6. It will pick the environment if it is set in bashrc or zshrc etc.