在我们的登台服务器上,我们在生产环境中运行我们的 Rails 应用程序,以便尽可能与我们的生产服务器相似。我们使用任何时候来创建我们的 crontab。但是,我们需要为站点地图生成运行一个稍微不同的 rake 任务,这样它就不会 ping Google 和 Bing。
在 deploy.rb 中,我们有:
set :stages, %w(production staging)
,但是在 deploy/staging.rb 和 deploy/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}" }
进入我的 deploy/staging.rb。然后我可以访问@stage
schedule.rb