簡體   English   中英

Rails.env 在哪里設置?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM