0

这是我在模型中所做的:

:after_save after_save

def after_save
    self.delay.do_thing
end

def do_thing
    Dir.mkdir("#{Rails.root}/my/path")
    system("cd #{Rails.root}/my/path && wget -with-some-flags")
end

这在开发中完美无缺。但是,在生产中,什么都没有发生。没有错误,什么都没有。

我检查了几件事,例如:

  • 在运行之前将命令发送到日志以确保它实际上是正确构建的
  • 手动运行命令以检查它是否正常工作
  • 打开一个生产 Rails shell 并执行myobject.do_thing,这也有效!
  • 在反引号和命令之间切换system(),以检查它是否与子外壳有关
  • 添加绝对命令路径,例如/usr/bin/wget,它也适用于命令行,但不适用于 Web 浏览器。
  • 检查它保存到的文件夹的权限

我知道该do_thing方法正在运行,因为它还在 do 的过程中创建了一个文件夹,该文件夹thing确实出现在文件系统中,而不是 wget 的结果。

我真的被难住了。有任何想法吗?

4

0 回答 0