在哪里设置Rails.env?

时间:2018-09-24 16:19:42

标签: ruby-on-rails nginx passenger

/etc/nginx/sites-available/appname内的服务器上,我分别设置了passenger_enabled on;rails_env production;。由于某些原因,当我运行rails r“ puts Rails.env”时,它会退出开发。我已经在我的应用中搜索了rails env的设置,但是在任何地方都看不到它。我希望有人可以指导我说明为什么Nginx appname config内部的设置会被开发覆盖。

版本:

nginx / 1.14.0

Rails 4.2.6

编辑: 乘客服务器配置:

server {
  listen 443;
  ssl on;
  ssl_certificate     /path/to/appname/fullchain.pem;
  ssl_certificate_key /path/to/appname/privkey.pem;
  ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "lkajsdflkjsalfkdjlsaf";
  ssl_prefer_server_ciphers on;
  client_max_body_size 32000M;
  server_name    domain.com;
  root /home/ubuntu/www/public;   # <--- be sure to point to 'public'!
  passenger_enabled on;
  rails_env production;
}

3 个答案:

答案 0 :(得分:1)

当乘客加载您的应用程序时,它将使用您通过rails_env设置的设置覆盖您的本地环境设置。请参阅https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_app_env,其中指出

  

此选项为当前应用程序设置   以下环境变量:

RAILS_ENV
RACK_ENV
WSGI_ENV
NODE_ENV
PASSENGER_APP_ENV

何时。您在命令行上运行“ rails r”,即在此处找到其他答案中提到的RAILS_ENV设置,该设置与nginx / passenger设置完全分开。尝试添加类似

的内容
<%= Rails.env %>
在视图中查看

,并查看生产中的应用程序。您应该看到它确实是生产环境,而在使用CLI rails命令(默认为开发)时,您可以自由使用所需的任何环境。

答案 1 :(得分:0)

RAILS_ENV默认设置为development

当您需要覆盖它时,请使用环境变量RAILS_ENV。试试这个:

RAILS_ENV=production rails r "puts Rails.env"

doc:https://guides.rubyonrails.org/configuring.html#rails-environment-settings

答案 2 :(得分:0)

您要在运行命令后使用RAILS_ENV = production指定rails环境。

如果要在生产环境中启动Rails控制台,请使用

rails console RAILS_ENV=production
rails server RAILS_ENV=production