2017-05-09 43 views
0

我在看這篇關於rake命令的文章,但不要在RAILS_ENV的位置。這是在某個特定的文件嗎?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. 

回答

3

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

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

ENV["RAILS_ENV"]只包含一個字符串,如 「生產」, 「發展」 或 「測試」。這告訴Rails which configuration file/config/environments中加載 - 以及database.yml中哪個散列鍵用於數據庫。

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

  • 負載/config/environments/foo.rb
  • 尋找在database.yml中的關鍵foo
  • Rails.env.foo?將是真實的。

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

參見:

+0

設置ENV變量的確切程度取決於shell使用和操作系統。儘管大多數操作系統:es(甚至是windows)都有env vars。 – max

1

它的環境變量,您可以通過在命令前通過它設置您正在執行

RAILS_ENV=production rake db:migrate 

您也可以通過在命令

MAIL_USERNAME=user MAIL_PASSWORD=password rails server 
之前將它們設置一些其他ENV變量

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

export MAIL_USERNAME=user 
export MAIL_PASSWORD=password 
rails server 

還有一個叫dotenv,幫助您輕鬆地將其儲存在一個.env文件,該文件將不會被推倒git或任何SVN使用

+0

所以RAILS_ENV用作容器爲您打造一個數據庫來測試的東西出來?那麼你可以有多個RAILS_ENV來嘗試在裏面使用不同的表格?或者你會不停地在你的開發環境中丟棄和重新設置表格? – stackjlei

+0

不完全是你在想什麼.. 但是你可以根據你的需要有不同的環境,如'test','demo','development'和'production' –

+0

你也可以創建你想要的任何環境,只要確保你有'config/environments /#{environment_name} .env' –

-1

據我理解ENV變量寶石,這個「RAILS_ENV」似乎很像環境變量可能是操作系統級別(例如在* uix環境下,使用env檢查其值),或者可能是特定於可能在配置文件(.propertie或其他)中設置的運行時。

0

RAILS_ENV是軌道環境,即開發,生產或分期。

可以使用RAILS_ENV一樣運行於不同的環境命令:

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

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

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