嘿,我们有一个库类(lib/Mixpanel)调用延迟作业,如下所示:
class Mixpanel
attr_accessor :options
attr_accessor :event
def track!()
..
dj = send_later :access_api # also tried with self.send_later
..
end
def access_api
..
end
Run Code Online (Sandbox Code Playgroud)
问题是当我们运行rake jobs:work:我们得到以下错误:
undefined method `access_api' for #<YAML::Object:0x24681b8>
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
我无法记录来自delayed_job进程的消息.这是正在运行的工作.
class MyJob
def initialize(blahblah)
@blahblah = blahblah
@logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))
end
def perform
@logger.add Logger::INFO, "logging from delayed_job"
#do stuff
end
end
Run Code Online (Sandbox Code Playgroud)
我尝试了各种日志记录级别,并且在我的环境配置中有config.log_level =:debug.我从monit运行delayed_job.我正在使用delayed_job 3.0.1和ruby 1.9.3以及rails 3.0.10.
ruby ruby-on-rails background-process delayed-job ruby-on-rails-3
我尝试在rails中的delayed_job内登录.
我将其配置如下:
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.max_attempts = 3
Delayed::Worker.backend = :active_record
Delayed::Worker.logger = ActiveSupport::BufferedLogger.new("log/#{Rails.env}_delayed_jobs.log", Rails.logger.level)
Delayed::Worker.logger.auto_flushing = 1
Run Code Online (Sandbox Code Playgroud)
定义我的工作:
class TestJob
def initialize(user)
@user = user
end
#called when enqueue is performed
def enqueue(job)
Delayed::Worker.logger.info("TestJob: enqueue was called")
end
def perform
Delayed::Worker.logger.info("\n\n\n\nTestJob: in perform, for user #{@user.twitter_username}")
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我打电话给我的工作时
Delayed::Job.enqueue(TestJob.new(user), 2)
Run Code Online (Sandbox Code Playgroud)
即使delayed_jobs表显示已执行作业,日志文件仍为空.
有任何想法吗?
现在只记录以下内容logs/delayed_job.log:
2012-04-20T03:57:44+0000: Cacher completed after 5.3676
2012-04-20T03:57:44+0000: 1 jobs processed at 0.1744 j/s, 0 failed ...
Run Code Online (Sandbox Code Playgroud)
我正在尝试做的是让它也记录我puts和我的SQL查询,就像在开发模式下一样,除了它仍然被记录log/delayed_job.log.
我尝试添加以下initializers/delayed_job_config.rb但没有运气:
Delayed::Worker.logger = Rails.logger
Delayed::Worker.logger.level = Logger::DEBUG
Run Code Online (Sandbox Code Playgroud)
(我的所有内容puts现在都已记录,但没有更多的作业状态日志,仍然没有SQL查询)