目前,如果我从我的应用程序添加/删除webhook,为了反映shopify应用程序,用户必须重新安装该应用程序。我需要一种方法来避免这种情况,所以我认为我会使用rake。
为此,我正在使用Rails ShopifyAPP。我的应用使用Rails 5。
配置/ application.rb中:
...
config.after_initialize do
Rails.application.load_tasks
Rake::Task['shopifyapp:shopify_webhooks'].invoke
end
...
LIB /任务/ shopify_webhooks.rake:
namespace :shopifyapp do
desc "create webhooks in shopify"
task :shopify_webhooks do
ShopifyApp.configure do |config|
config.webhooks = [
{topic: 'carts/update', address: 'https://some-external-address', format: 'json'},
]
end
puts "works" # outputs when server restarts
end
end
我的第6感觉告诉我rake文件有些不对劲。我错过了什么吗?有什么问题? Webhooks没有创建。
如果我在config/initializers/shopify_app.rb
中添加新的网络挂钩,则仅在重新安装该应用时才有效。
答案 0 :(得分:0)
由于您拥有商店的有效身份验证令牌,因此您在rake任务中只需连接到商店,然后使用API创建webhook。这很容易做到。
driver
我认为这更像是如何使用rake而不是尝试在rake任务中模仿Rails。
答案 1 :(得分:0)
@David Lazar是正确的,但对于像我这样的菜鸟来说并不是那么清楚。我希望所有连接的商店能够获得我需要的更新,以便首先从数据库获得所有连接的商店:
namespace :shopifyapp do
desc "create webhooks in shopify"
task :shopify_webhooks do
Shop.all.each do |s|
domain = s.shopify_domain
token = s.shopify_token
ShopifyAPI::Base.activate_session(ShopifyAPI::Session.new(domain, token))
ShopifyAPI::Webhook.create(
topic: 'carts/update',address: 'https://foo ...,
)
end
end
end
现在我可以从控制台或服务器重启时运行rake任务!尼斯。如果我有成千上万的用户(商店),不确定性能。