2016-09-26 16 views
0

現在、私のアプリケーションからwebhookを追加/削除すると、shopifyアプリに反映させるために、ユーザーはアプリケーションを再インストールする必要があります。私はそれを避ける方法が必要なので、私はレーキを使用すると思った。Shopifyでwebhooksを作成するのにRakeを使用

これは私がRails ShopifyAPPを使用しています。私の第六感覚が何かではない私に指示

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 

... 

config.after_initialize do 
    Rails.application.load_tasks 
    Rake::Task['shopifyapp:shopify_webhooks'].invoke 
end 

... 

のlib /タスク/ shopify_webhooks.rake:私のアプリはRailsの5

のconfig/application.rbを使用していますレーキファイルを使用してください。何か不足していますか?問題は何ですか? Webhooksは作成されていません。

config/initializers/shopify_app.rbに新しいウェブフックを追加すると、アプリが再インストールされた場合にのみ機能します。

答えて

0

ショップに有効な認証トークンがあるので、レーキタスクでショップに接続し、APIを使用してウェブフックを作成します。それは非常に簡単です。

ShopifyAPI::Base.activate_session(ShopifyAPI::Session.new(shop,token)) 
ShopifyAPI::Webhook.create(topic: 'orders/paid', address: 'https:foo', format: 'json') 

私はrakeタスクの内部で試してみて、模倣レールに比べて熊手を使用する方法と、よりインラインだと思います。

+0

ありがとう、David。私はこれを試して、後で報告します。 – Sylar

+0

こんにちは。ちょうどこれを試しましたが、 'shop'と' token'はどこから来たのですか? – Sylar

+0

私は理解しています。どのようにレーキファイルの現在の店を取得するには? – Sylar

0

@David Lazarは正解ですが、私のようなnoobにとっては明らかではありません。

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タスクを実行することができたり、サーバの再起動:私は、私が最初にデータベースからすべての接続の店を取得する必要があり、更新を取得するために接続されたすべてのお店が欲しかったです!ニース。何千人ものユーザー(店舗)がいる場合は、パフォーマンスについては不明です。

+0

レイクタスクは、実際には単にタスクにすぎません。ループ内で1000店舗を更新する必要がある場合は、とにかくネットワーク接続されているので、あなたがRailsかレーキコンソールかどうかは関係ありません。 –

+0

私は参照してください。だから1000店舗にあなたのアプリを再インストールするよう伝えるのではなく、何が最善の方法ですか? – Sylar

+0

あなたがしたように!私は1000以上のショップが接続されているAppsを持っています。私はいつもこのようにしています... RakeとのコマンドラインFTW ...これは最高です。 –

関連する問題