【问题标题】:delayed_job - Performs not up to date code?delay_job - 执行不是最新的代码?
【发布时间】:2019-08-25 14:18:06
【问题描述】:

我在site5.com 共享主机上使用delayed_job(尝试了tobi 和collective_idea),乘客作为rails 环境。 我设法完成了工作。 但是,该插件似乎在首次运行后忽略了作业类源代码中的任何更改。 我在每次更改时都重新启动了服务器 (touch tmp/restart.txt),但它仍然忽略它。

例子:

文件:lib/xx_job.rb

class XxJob
  def perform
    Rails.logger.info "XX START"

    TempTest.delete_all

    i = 0
    10.times {
      i+=1
      TempTest.create(:name => "XXX")
      sleep(1)
    }

    Rails.logger.info "XX END"
  end
end

在我调用的简单控制器中:

Delayed::Job.enqueue(XxJob.new)

我收集到的结论:

  1. 如果我将 xx_job.rb 更改为 xx_job1.rb - 控制器上的错误
  2. 如果我将 XxJob 类更改为 XxJob1 类 - 控制器出错
  3. 如果我删除所有perform方法内容-老代码老代码被执行
  4. 带有类和执行的新 .rb 文件,将该类加入队列 - 完美运行
  5. 如果我在新文件的执行和运行作业中更改某些内容 - 将执行旧代码

在每次更改之间,我都重新启动了服务器。 似乎Passenger或其他东西可以保存类缓存。

如何删除此缓存?是存储在服务器上的某个地方吗? (我希望我可以从共享主机访问它)

谢谢!

【问题讨论】:

标签: ruby-on-rails passenger delayed-job


【解决方案1】:

如果您运行守护进程的延迟作业,那么您需要重新启动它们以重新加载代码。另外,请记住,每个工作人员都会加载自己的 Rails 实例。

【讨论】:

    【解决方案2】:

    最终我想通了 - 几个工人在后台运行,他们每个人都找到了一份工作并拥有自己的缓存。 我不知道如何杀死他们,所以我改变了桌子的名字几秒钟。这杀死了他们:)

    然后我用https://github.com/tobi/delayed_job/wiki/Running-Delayed::Worker-as-a-daemon作为worker start,效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多