[英]Where is Rails.env set?
在/etc/nginx/sites-available/appname
內的服務器passenger_enabled on;
我passenger_enabled on;
和rails_env production;
放。 出於某種原因,當我運行 rails r "puts Rails.env" 它會吐出開發。 我已經在我的應用程序中搜索了 rails env 的設置,但在任何地方都沒有看到。 我希望有人可以指導我了解為什么 nginx appname 配置中的設置被開發覆蓋的方向。
版本:
nginx/1.14.0
導軌 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;
}
當乘客加載您的應用程序時,它會使用您通過 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 命令時,您可以隨意使用任何您想要的環境,該命令默認為開發環境。
RAILS_ENV 默認設置為development
。
當您需要覆蓋它時,請使用環境變量RAILS_ENV
。 嘗試這個:
RAILS_ENV=production rails r "puts Rails.env"
文檔: https : //guides.rubyonrails.org/configuring.html#rails-environment-settings
您需要在要運行的命令之后使用 RAILS_ENV=production 指定 rails 環境。
如果要為生產環境啟動 rails 控制台,請使用
rails console RAILS_ENV=production
rails server RAILS_ENV=production
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.