簡體   English   中英

RAILS_ENV在哪里?

[英]Where is the RAILS_ENV?

我正在看有關rake命令的文章,但不在RAILS_ENV所在的位置。 那是在特定文件中的某個地方嗎?

db:create Creates the database for the current RAILS_ENV environment. If RAILS_ENV is not specified it defaults to the development and test databases.

RAILS_ENV只是一個環境變量,它在外殼程序或操作系統本身(或在調用進程時)中設置。

環境變量是一組動態的命名值,可以影響正在運行的進程在計算機上的行為方式。
它們是運行流程的環境的一部分。 例如,正在運行的進程可以查詢TEMP環境變量的值以發現合適的位置來存儲臨時文件,或者可以查詢HOMEUSERPROFILE變量來查找運行該進程的用戶所擁有的目錄結構。
https://en.wikipedia.org/wiki/Environment_variable

ENV["RAILS_ENV"]僅包含諸如“生產”,“開發”或“測試”之類的字符串。 這告訴Rails加載/config/environments 哪個配置文件 -以及database.yml哪個哈希鍵用於數據庫。

例如,如果ENV["RAILS_ENV"] == "foo" Rails將:

  • 加載/config/environments/foo.rb
  • 在database.yml中查找鍵foo
  • Rails.env.foo? 會是真的。

因此,Rails環境的概念與通用計算概念有所不同-Rails環境是一組用於不同目的(例如自動化測試或生產)的設置和數據庫的廣義術語。

也可以看看:

您可以通過在執行命令之前傳遞它來設置環境變量

RAILS_ENV=production rake db:migrate

您還可以通過在命令前傳遞其他ENV變量來設置它們

MAIL_USERNAME=user MAIL_PASSWORD=password rails server

或者您可以將它們導出到外殼

export MAIL_USERNAME=user
export MAIL_PASSWORD=password
rails server

還有一個叫做dotenv的gem,可以通過將它們保存在.env文件中來幫助您輕松設置env變量,該文件不會通過git或您使用的任何SVN推送

RAILS_ENV是Rails環境,即開發,生產或登台。

您可以使用RAILS_ENV在不同環境下運行命令,例如:

RAILS_ENV=production rake db:migrate #runs migration in production env

RAILS_ENV=test rake db:migrate #runs migration in test env

默認情況下,環境是開發。

RAILS_ENV這只是環境變量的名稱。 因此,當您運行任何rake任務或rails命令時,可以使用它。 喜歡:

RAILS_ENV=test rails c

但是您會想知道如何在Rails中使用這個env變量,這是地方: https//github.com/rails/rails/blob/ce4d467f7c2fc812e257a87bd4875c1f1f08a981/railties/lib/rails.rb#L72

這意味着Rails將更傾向於使用RAILS_ENV來確定當前的環境。

據我了解,這個“ RAILS_ENV”看起來很像是環境變量,可能是操作系統級別的(例如在* uix環境下,使用env來檢查其值),或者可能是特定於運行時的,可以在配置文件中設置。屬性或其他)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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