Class: ShopifyApp::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/shopify_app/install/install_generator.rb

Constant Summary collapse

NGROK_HOST =
"/[-\\w]+\\.ngrok\\.io/"
CLOUDFLARE_HOST =
"/[-\\w]+\\.trycloudflare\\.com/"

Instance Method Summary collapse

Instance Method Details

#create_embedded_app_layoutObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/generators/shopify_app/install/install_generator.rb', line 31

def create_embedded_app_layout
  return unless embedded_app?

  copy_file("embedded_app.html.erb", "app/views/layouts/embedded_app.html.erb")
  copy_file("_flash_messages.html.erb", "app/views/layouts/_flash_messages.html.erb")

  if ShopifyApp.use_webpacker?
    copy_file("shopify_app.js", "app/javascript/shopify_app/shopify_app.js")
    copy_file("flash_messages.js", "app/javascript/shopify_app/flash_messages.js")
    copy_file("shopify_app_index.js", "app/javascript/shopify_app/index.js")
    append_to_file("app/javascript/packs/application.js", "require(\"shopify_app\")\n")
  elsif ShopifyApp.use_importmap?
    copy_file("shopify_app_importmap.js", "app/javascript/lib/shopify_app.js")
    copy_file("flash_messages.js", "app/javascript/lib/flash_messages.js")
    append_to_file("config/importmap.rb", "pin_all_from \"app/javascript/lib\", under: \"lib\"\n")
  else
    copy_file("shopify_app.js", "app/assets/javascripts/shopify_app.js")
    copy_file("flash_messages.js", "app/assets/javascripts/flash_messages.js")
  end
end

#create_session_store_initializerObject



27
28
29
# File 'lib/generators/shopify_app/install/install_generator.rb', line 27

def create_session_store_initializer
  copy_file("session_store.rb", "config/initializers/session_store.rb")
end

#create_shopify_app_initializerObject



19
20
21
22
23
24
25
# File 'lib/generators/shopify_app/install/install_generator.rb', line 19

def create_shopify_app_initializer
  @application_name = format_array_argument(options["application_name"])
  @scope = format_array_argument(options["scope"])
  @api_version = options["api_version"] || ShopifyAPI::LATEST_SUPPORTED_ADMIN_VERSION

  template("shopify_app.rb", "config/initializers/shopify_app.rb")
end

#insert_hosts_into_development_configObject



56
57
58
59
60
# File 'lib/generators/shopify_app/install/install_generator.rb', line 56

def insert_hosts_into_development_config
  "Rails.application.configure do\n"
    .then { insert_tunnel_host_rules("ngrok", _1, NGROK_HOST + "\n") }
    .then { insert_tunnel_host_rules("Cloudflare", _1, CLOUDFLARE_HOST + "\n") }
end

#mount_engineObject



52
53
54
# File 'lib/generators/shopify_app/install/install_generator.rb', line 52

def mount_engine
  route("mount ShopifyApp::Engine, at: '/'")
end