2016-09-26 5 views
0

Derzeit, wenn ich einen Webhook aus meiner Anwendung hinzufügen/entfernen, damit er in der shopify App reflektiert wird, muss der Benutzer die App neu installieren. Ich brauche einen Weg, das zu vermeiden, also dachte ich, ich würde Rake benutzen.Verwenden Sie Rake, um Webhooks in Shopify zu erstellen

Dafür verwende ich die Rails ShopifyAPP. Meine App nutzt Rails 5.

config/application.rb:

... 

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

... 

lib/Aufgaben/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 

Mein sechster Sinn sagt mir etwas nicht direkt mit der Rake-Datei. Fehle ich etwas? Was ist das Problem? Webhooks werden nicht erstellt.

Wenn ich einen neuen Webhook in config/initializers/shopify_app.rb hinzufüge, funktioniert es nur, wenn die App neu installiert wird.

Antwort

0

Da Sie ein gültiges Authentifizierungstoken für den Shop haben, stellen Sie in Ihrer Rake-Aufgabe einfach eine Verbindung zum Shop her und verwenden Sie die API, um den Webhook zu erstellen. Es ist sehr einfach zu machen.

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

Ich denke, dass mehr inline mit, wie Rechen zu verwenden, als in einer Rake-Aufgabe zu versuchen und Mimik Rails.

+0

Danke, David. Ich werde das versuchen und später berichten. – Sylar

+0

Hallo. Habe das gerade ausprobiert, aber wo kommt 'shop' und' token' her? – Sylar

+0

Ich verstehe. Wie bekomme ich den aktuellen Shop in die Rake-Datei? – Sylar

0

@David Lazar ist korrekt, aber nicht so klar für einen Noob wie mich. Ich wollte das alle angeschlossenen Shop das Update ich aus der Datenbank alle angeschlossenen Shop zu bekommen brauchen, um zuerst:

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 

Jetzt kann ich die Harke Aufgabe von der Konsole oder beim Neustart des Servers laufen! Nett. Ich bin mir nicht sicher über die Leistung, wenn ich Tausende von Benutzern (Shops) habe.

+0

Rake-Tasks sind nicht dazu gedacht, leistungsfähig zu sein, wenn sie tatsächlich nur Aufgaben sind. Wenn Sie 1000 Shops in einer Schleife aktualisieren müssen, sind Sie ohnehin netzwerkgebunden. Es spielt also keine Rolle, ob Sie in Rails oder in der Rake-Konsole sind. –

+0

Ich verstehe. Also, anstatt 1000 Shops Ihre App neu zu installieren, was ist der beste Weg? – Sylar

+0

Wie du es getan hast! Ich habe Apps mit über 1000 Shops verbunden und ich bastle immer so mit ihnen ... Kommandozeile FTW mit Rake ... es ist das Beste. –

Verwandte Themen