When I need to run something periodically on production, I always implement it as a rake tasks and install it as a cron job. Nevertheless there’s some setup to do in the task to have proper logging and error reporting.
This is the template I use for creating those tasks:
namespace :projectx do desc "Do something" task :something => :environment do if Rails.env.development? # Log to stdout. logger = Logger.new(STDOUT) logger.level = Logger::INFO # DEBUG to see queries ActiveRecord::Base.logger = logger ActionMailer::Base.logger = logger ActionController::Base.logger = logger else logger = ActiveRecord::Base.logger end begin logger.info "Doing something" rescue Exception => e HoptoadNotifier.notify(e) raise e end end end
While in development mode, it outputs to the console for convenience.