2011-04-11 29 views
3

我在我的linode VPS上設置了我的rails應用程序,phusion乘客已安裝並正在運行,mysql也是如此(我知道這導致我的朋友當前正在運行2個生產應用程序建立)。 VPS運行的是Ubuntu 10.10,我使用的是帶有乘客的apache2。rails3應用程序ENV未被識別爲生產

我將應用程序SFTP到服務器,捆綁更新,設置我的虛擬主機並指定RailsEnv爲生產,路徑都是準確的。

我然後重新啓動服務器(根)與 的apachectl -k重啓 試圖耙分貝:遷移,它沒有做任何事情,所以我想這是因爲環境沒有得到改變,這是到底發生了什麼。如果我進入rails控制檯並鍵入Rails.env,它會給我帶來發展。

我不知道爲什麼,我做了一切應該把它設置爲生產?任何人都知道我可能錯過了什麼?在應用程序中是否有某處我應該改變某些內容來說生產環境?我認爲只需要在軌道上完成2.x

在此先感謝您提供任何幫助。

+0

當你說你做了'rake db:migrate'和'rails console'時,你輸入的是什麼?或者你是否在命令中追加了'RAILS_ENV = production'?或者你是否將RAILS_ENV環境變量設置爲「production」? – Jeff 2011-04-11 03:15:56

+0

我在哪裏設置RAILS_ENV環境..我讀過的所有內容都說這隻適用於rails 2.x而不適用於rails 3.這就是爲什麼我不確定該怎麼做。但是Phusion Passenger和我讀過的其他所有東西都說你只需要將它設置在你的虛擬主機文件中,通過做「RailsEnv製作」,我做了 – Ben 2011-04-11 03:24:56

+0

就沒有了,我沒有在命令中附加RAILS_ENV = production,但是甚至如果我這樣做,那隻適用於這些命令,但我的服務器不會在生產中爲我的應用程序提供服務 – Ben 2011-04-11 03:26:13

回答

16

RailsEnv設置僅供乘客使用。它不會影響你在shell中輸入的命令。

使用

RAILS_ENV=production rake db:migrate 

RAILS_ENV=production rails console 

或者在您的登錄shell設置RAILS_ENV環境變量production,使您不必追加RAILS_ENV=production在指令發出:

export RAILS_ENV=production 

(確切的命令可能會有所不同ding在你使用的shell上;上面的作品在bash中)

+0

謝謝你們,你們對此有所瞭解。看起來我手上有另一個問題,乘客告訴我我的應用程序助手有一些語法錯誤,但它可能與寶石問題有關 – Ben 2011-04-11 03:50:43

1

你走的是正確的軌道;您只需在生產模式下運行應用程序就可以像設置RailsEnv一樣,假設您使用Passenger運行應用程序。但是,要運行數據庫遷移,您需要告訴Rails在哪些環境中運行。

默認情況下,rails控制檯命令默認爲'開發'環境。運行數據庫遷移也是如此。

要在生產環境中運行遷移,你需要這樣運行命令:

RAILS_ENV=production rake db:migrate 

而且在生產模式運行控制檯,則需要使用命令來運行控制檯:

rails console production 
0

如果你想自動設置這個變量,把RAILS_ENV=production放在你的~/.bashrc文件的末尾。 (這隻適用於bash終端)

然後打開一個新的終端,或重新啓動您的ssh連接。