Resque作业返回错误:“没有这样的文件或目录 - getcwd”

时间:2013-06-07 19:04:42

标签: ruby-on-rails resque

我的工作非常简单:

class MyJob
  @queue = :high

  def self.perform(user_id)
    user = User.find(user_id)
    MyMailer.send_email(user).deliver
  end

end

如果我手动运行MyJob.perform(some_id),它就可以完美运行。但是,当Rescue执行它时,它会返回以下错误:

Exception
    Errno::ENOENT Error
    No such file or directory - getcwd

 shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_view/template/resolver.rb:221:in `expand_path'  shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_view/template/resolver.rb:221:in `initialize'  shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_view/template/resolver.rb:251:in `new'  shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_view/template/resolver.rb:251:in `instances'  shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_view/lookup_context.rb:16:in `<class:LookupContext>'  shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_view/lookup_context.rb:12:in `<module:ActionView>'  shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_view/lookup_context.rb:5:in `<top (required)>'  shared/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/abstract_controller/view_paths.rb:45:in `lookup_context'  shared/bundle/ruby/1.9.1/gems/actionmailer-3.2.12/lib/action_mailer/base.rb:456:in `process'  shared/bundle/ruby/1.9.1/gems/actionmailer-3.2.12/lib/action_mailer/base.rb:452:in `initialize'  shared/bundle/ruby/1.9.1/gems/actionmailer-3.2.12/lib/action_mailer/base.rb:439:in `new'  shared/bundle/ruby/1.9.1/gems/actionmailer-3.2.12/lib/action_mailer/base.rb:439:in `method_missing'  releases/1111111111111/app/jobs/my_job.rb:6:in `perform'

有什么想法可能会发生吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

是天空。你是对的,需要重新启动它。

有些人在尝试从已删除的目录运行后收到此错误。

切换数据库并让服务器运行后,我收到此错误。旧的服务器信息仍然显示,但我收到此错误。重新启动我的rails服务器,一切正常,新的数据库。

基本上,这意味着服务器上存在重大的状态更改,您的环境需要重置/重新启动。

答案 1 :(得分:1)

我在生产环境中开始遇到同样的问题。经过一番调查后,我发现这是由于我的resque工作人员未能在每次capistrano部署中正确重启。