4

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?

Sachin Singh
  • 7,107
  • 6
  • 40
  • 80

4 Answers4

1

You can try this in your application.rb after Bundler.require statement

ENV['RAILS_ENV'] ||= 'staging'
Kuldeep
  • 884
  • 7
  • 12
1

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.
Paritosh Piplewar
  • 7,982
  • 5
  • 26
  • 41
0

I have put ENV['RAILS_ENV'] ||= 'custom_development' in boot.rb at the last. It worked.

I have tested

  • rake
  • server
  • console
  • dbconsole

All Worked.

0

In my case I edit file .zshrc (in other cases file .bashrc):

vi ~/.zshrc

or

vi ~/.bashrc

And add this line:

export RAILS_ENV="staging"

After environment staging runs by rails s.

shilovk
  • 11,718
  • 17
  • 75
  • 74