在/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;
}
答案 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