На нашем промежуточном сервере мы запускаем наше приложение Rails в производственной среде, чтобы быть как можно более похожими на наш производственный сервер. Мы используем всякий раз, когда создаем наш crontab. Тем не менее, нам нужно запустить немного другую задачу рейка для нашего создания Sitemap, чтобы он не пинговал Google и Bing.Capistrano и Whenever Stage Variables
В 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
Как я могу сделать эту переменную в наличии?
Update
Я был в состоянии решить эту проблему, поставив
set :whenever_variables, defer { "stage=#{stage}" }
в моей развертывания/staging.rb. то я имел доступ к @stage
в schedule.rb
Я получаю сообщение об ошибке - неопределенный метод 'Defer». Нужно ли включать что-либо другое, кроме как когда-либо/capistrano? –
@VivekRao Я понял, что это решение, я разместил его как отдельный ответ ниже. – dmccabe