Jas*_*son 4 capistrano ruby-on-rails whenever whenever-capistrano
在我们的登台服务器上,我们在生产环境中运行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
Run Code Online (Sandbox Code Playgroud)
如何使该变量可用?
更新
我能够通过推杆解决它
set :whenever_variables, defer { "stage=#{stage}" }
进入我的deploy/staging.rb.然后我可以访问@stageschedule.rb
不确定这是否有效但值得一试(从每当自述)
# deploy.rb
set :whenever_environment, defer { stage }
require "whenever/capistrano"
Run Code Online (Sandbox Code Playgroud)
然后在你的schedule.rb
set :environment, ENV['RAILS_ENV']
case environment
when 'production', 'staging'
...
when 'production'
...
when 'staging'
...
end
Run Code Online (Sandbox Code Playgroud)
更新:你也可以使用
set(:whenever_command) { "STAGE=#{stage} bundle exec whenever" }
Run Code Online (Sandbox Code Playgroud)
这样你就可以访问STAGE里面的环境变量了schedule.rb
| 归档时间: |
|
| 查看次数: |
5991 次 |
| 最近记录: |