【发布时间】:2015-11-18 21:35:31
【问题描述】:
我使用“whenever gem”编写了一个调度程序。我的一个调度程序每天运行一个 rake 任务。这个 rake 任务调用我模型中的一个方法并执行 activerecord 操作。
一切正常,但 activerecord 连接到 database.yml 文件中的“开发”环境,并在生产时连接到开发数据库。
config/schedule.rb
set :output, "log/cron_log.log"
every 6.hours do
rake "sidekiq:restart"
end
every :day, :at => '01:00am' do
rake 'prune_users:older_than_2months'
end
瑞克文件
require 'newrelic_rpm'
require './app.rb'
import './lib/tasks/sidekiq.rake'
import './lib/tasks/reap_user.rake'
import './models/exportuser.rb'
/lib/tasks/reap_user.rake
require 'sinatra/activerecord'
require 'sinatra/activerecord/rake'
namespace :prune_users do
desc 'Delete 2 months older users with status non-active'
task :older_than_2months do
ExportUser.delete_users_b4_2months
end
end
/models/exportuser.rb
class ExportUser < ActiveRecord::Base
self.table_name = 'exportusers'
def self.delete_users_b4_2months
begin
@old_users = ExportUser.where("status != ? and Modified < ?", "Active", 2.months.ago)
puts "Count of users before 2 months with non-active status on #{Time.now}"
puts @old_users.count
@old_users.find_each do |users|
users.destroy!
end
rescue => err
NewRelic::Agent.notice_error(err)
end
end
end
一切正常,但在 ExportUser.rb 中,activerecord 连接到开发数据库。如何使其连接到生产环境。?
【问题讨论】:
标签: ruby rake-task whenever sinatra-activerecord