【发布时间】:2013-01-16 00:23:01
【问题描述】:
我有一个 resque 工作者,它在运行 bash 命令后立即停止所有处理。这是我的工人:
class ProductJsonSaver
@queue = :products
def self.perform(id)
product = Product.find(id)
json = `phantomjs #{Rails.root}/lib/product_scrape.js`
product_json = JSON.parse(json)
p "Procesing is done"
p "Product JSON: #{product_json}"
product.update_attributes({:processed => true})
end
end
如果我跑了
Resque.enqueue(ProductJsonSaver, 1)
我可以看到工作人员运行 bash 命令,我看到了 bash 命令的输出,但之后看不到打印语句,不是产品的已处理属性更新。 resque-web 也没有将进程显示为失败。事实上,只需从 rails 控制台运行 ProductJsonSaver.perform(1) 即可。
这是 Resque 的错误吗?
基本要素:Rails 3.2.11、OSX、ruby-1.9.3、resque 1.23.0
EDITED 代码使问题更清晰。
【问题讨论】:
-
您实际上没有使用“json”变量是否有原因?我看到您正在将“prod”传递给您的#save_from_json
-
更新了代码,```里面的命令运行后基本什么都没有了。
标签: ruby-on-rails ruby ruby-on-rails-3.2 resque ruby-1.9.3