在我們的登臺服務器上,我們在生產環境中運行我們的Rails應用程序,以便儘可能與我們的生產服務器相似。我們正在使用每當創建我們的crontab。但是,我們需要爲我們的網站地圖生成運行稍微不同的rake任務,因此它不能Ping Google和Bing。Capistrano和每當階段變量
在deploy.rb,我們有: set :stages, %w(production staging)
,但在這兩種部署/ staging.rb和部署/ production.rb我們:rails_env, "production"
集,所以我不能使用Rails.env
。
在schedule.rb
,我想要做的事,如:
every :day, at: '1am' do
if @stage == 'production'
rake 'sitemap:refresh'
else
rake 'sitemap:refresh:no_ping'
end
end
我怎樣才能讓這個變量可用?
更新
我能夠把
set :whenever_variables, defer { "stage=#{stage}" }
到我的部署/ staging.rb來解決它。然後我就進入@stage
在schedule.rb
我得到一個錯誤 - 未定義的方法'延遲」。除了每當/ capistrano之外,我是否需要包含其他內容? – 2014-05-29 22:19:44
@VivekRao我想出了一個解決方案,我把它作爲一個單獨的答案在下面發佈。 – dmccabe 2016-11-16 15:17:00