如何在shopify_app gem中使用webhooks?

时间:2017-06-20 11:41:32

标签: ruby-on-rails shopify

在过去的几个小时里,我一直在尝试使用官方shopify_app gem为我的Shopify应用添加webhook。

所以我运行rails g shopify_app:add_webhook -t products/update -a https://example.com/webhooks/products_update并看到每个文件都按预期生成并在Test Store中安装我的应用程序后检查日志,这也向我显示webhook已成功启动。

但是,在实际更新商店中的产品后,我收到错误消息:

ShopifyApp::MissingWebhookJobError (ShopifyApp::MissingWebhookJobError):

shopify_app (7.2.9) app/controllers/shopify_app/webhooks_controller.rb:21:in `webhook_job_klass'
shopify_app (7.2.9) app/controllers/shopify_app/webhooks_controller.rb:10:in `receive'
actionpack (5.0.3) lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'

...继续大约40行并在大约10-30秒后重复自己,然而,在投掷之前向我展示了参数。我还没有改变products_job.rb,所以它仍然看起来像这样:(虽然我试图多次改变它)

class ProductsJob < ActiveJob::Base
  def perform(shop_domain:, webhook:)
    shop = Shop.find_by(shopify_domain: shop_domain)

    shop.with_shopify_session do
    end
  end
end

我真的很高兴收到任何意见,因为我对Shopify应用程序和Rails也是新手(你可能会告诉^^)

谢谢,Georg

2 个答案:

答案 0 :(得分:2)

您的产品更新作业文件名应该与products_update_job.rb类似,而不是products_job.rb,内容应如下所示:

class ProductsUpdateJob < ActiveJob::Base
  def perform(shop_domain:, webhook:)
    shop = Shop.find_by(shopify_domain: shop_domain)

    shop.with_shopify_session do
    end
  end
end

尝试这些更改,你会得到它。

答案 1 :(得分:0)

安装webhook后,您是否重新启动了rails服务器? 重新启动rails服务器还要在shopify商店中卸载并重新安装您的应用程序,然后在单击安装按钮之前检查相应的webhook是否可用于安装页面。