Sha256: 4f0010f34290deeb7336aaf548de72a6fe9fab3ce17a21aa1004fe4d5283bde6
Contents?: true
Size: 2 KB
Versions: 13
Compression:
Stored size: 2 KB
Contents
# frozen_string_literal: true require "rails/generators/base" module ShopifyApp module Generators class AddWebhookGenerator < Rails::Generators::Base source_root File.expand_path("../templates", __FILE__) class_option :topic, type: :string, aliases: "-t", required: true class_option :path, type: :string, aliases: "-p", required: true hook_for :test_framework, as: :job, in: :rails do |instance, generator| instance.invoke(generator, [instance.send(:job_file_name)]) end def init_webhook_config initializer = load_initializer return if initializer.include?("config.webhooks") inject_into_file( "config/initializers/shopify_app.rb", " config.webhooks = [\n ]\n", after: /ShopifyApp\.configure.*\n/, ) end def inject_webhook_to_shopify_app_initializer inject_into_file( "config/initializers/shopify_app.rb", webhook_config, after: "config.webhooks = [", ) initializer = load_initializer unless initializer.include?(webhook_config) shell.say("Error adding webhook to config. Add this line manually: #{webhook_config}", :red) end end def add_webhook_job namespace = ShopifyApp.configuration.webhook_jobs_namespace @job_file_name = if namespace.present? "#{namespace}/#{job_file_name}_job" else "#{job_file_name}_job" end @job_class_name = @job_file_name.classify template("webhook_job.rb", "app/jobs/#{@job_file_name}.rb") end private def job_file_name path.split("/").last end def load_initializer File.read(File.join(destination_root, "config/initializers/shopify_app.rb")) end def webhook_config "\n { topic: \"#{topic}\", path: \"#{path}\" }," end def topic options["topic"] end def path options["path"] end end end end
Version data entries
13 entries across 13 versions & 1 rubygems