[英]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
環境變量的值以發現合適的位置來存儲臨時文件,或者可以查詢HOME
或USERPROFILE
變量來查找運行該進程的用戶所擁有的目錄結構。
https://en.wikipedia.org/wiki/Environment_variable
ENV["RAILS_ENV"]
僅包含諸如“生產”,“開發”或“測試”之類的字符串。 這告訴Rails加載/config/environments
哪個配置文件 -以及database.yml
哪個哈希鍵用於數據庫。
例如,如果ENV["RAILS_ENV"] == "foo"
Rails將:
/config/environments/foo.rb
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.