2015-05-30 19 views
1

有沒有解決方案,我可以找出我的應用程序在哪個環境中運行?Rails環境如何在代碼中找出?

我有一些耙調用至極需要有這樣的環境:

system "RAILS_ENV=development rake crons:dosomething" 

但是,這不應該只在開發工作我想在試生產和開發使用呢?

我該怎麼做?

,我需要這是在配置

秒任務/ schedule.rb的也應在所有環境中運行

rake "crons:dosomething", :environment => :development 
rake "crons:dosomething", :environment => :production 

這個不到風度工作

+1

你需要調用['Rails.env'](http://apidock.com/rails/v4.2.1/Rails/env/class)來獲取當前環境名稱..和['env ='](http://apidock.com/rails/v4.2.1/Rails/env%3D/class)來設置環境。 –

+0

你想從控制檯運行這段代碼嗎?或從你的應用程序? – Emu

+0

代碼是從應用程序運行,第一次剪切是在按鈕單擊運行,第二次剪切從任何時候作爲cronjob調用 – Felix

回答

1

你也可以做

Rails.env.production? || Rails.env.development? 

與您擁有的任何環境。

另外一個環境傳遞給rake任務,你可以做到這一點

rake "crons:dosomething RAILS_ENV=production"

+0

Rails.env在控制器中工作正常,但在schedule.rb中無法工作。不能在那裏使用Rails.env ...因爲每當-w這個文件被設置爲crontab文件 – Felix

1

你可以把它匹配字符串一樣:

if Rails.env.eql?('production') 
    #Do production things 
end 
+0

爲我的第一個代碼示例或第二個? – Felix

相關問題