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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args, *options) ⇒ InstallGenerator

Returns a new instance of InstallGenerator.



11
12
13
14
# File 'lib/generators/shopify_app/install/install_generator.rb', line 11

def initialize(args, *options)
  @opts = Hash[options.first.join(' ').scan(/--?([^=\s]+)(?:=(\S+))?/)]
  super(args, *options)
end

Instance Attribute Details

#optsObject (readonly)

Returns the value of attribute opts.



9
10
11
# File 'lib/generators/shopify_app/install/install_generator.rb', line 9

def opts
  @opts
end

Instance Method Details

#add_home_index_routeObject



71
72
73
# File 'lib/generators/shopify_app/install/install_generator.rb', line 71

def add_home_index_route
  route "root :to => 'home#index'"
end

#create_and_inject_into_omniauth_initializerObject



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/generators/shopify_app/install/install_generator.rb', line 20

def create_and_inject_into_omniauth_initializer
  unless File.exist? "config/initializers/omniauth.rb"
    copy_file 'omniauth.rb', 'config/initializers/omniauth.rb'
  end

  inject_into_file(
    'config/initializers/omniauth.rb',
    File.read(File.expand_path(find_in_source_paths('shopify_provider.rb'))),
    after: "Rails.application.config.middleware.use OmniAuth::Builder do\n"
  )
end

#create_embedded_app_layoutObject



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

def create_embedded_app_layout
  if embedded_app?
    copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb'
  end
end

#create_home_controllerObject



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

def create_home_controller
  template 'home_controller.rb', 'app/controllers/home_controller.rb'
end

#create_home_index_viewObject



61
62
63
64
65
66
67
68
69
# File 'lib/generators/shopify_app/install/install_generator.rb', line 61

def create_home_index_view
  copy_file 'index.html.erb', 'app/views/home/index.html.erb'
  if embedded_app?
    prepend_to_file(
      'app/views/home/index.html.erb',
      File.read(File.expand_path(find_in_source_paths('shopify_app_ready_script.html')))
    )
  end
end

#create_shopify_app_initializerObject



16
17
18
# File 'lib/generators/shopify_app/install/install_generator.rb', line 16

def create_shopify_app_initializer
  template 'shopify_app.rb', 'config/initializers/shopify_app.rb'
end

#create_shopify_session_repository_initializerObject



32
33
34
# File 'lib/generators/shopify_app/install/install_generator.rb', line 32

def create_shopify_session_repository_initializer
  copy_file 'shopify_session_repository.rb', 'config/initializers/shopify_session_repository.rb'
end

#inject_embedded_app_options_to_applicationObject



36
37
38
39
40
41
# File 'lib/generators/shopify_app/install/install_generator.rb', line 36

def inject_embedded_app_options_to_application
  if embedded_app?
    application "config.action_dispatch.default_headers.delete('X-Frame-Options')"
    application "config.action_dispatch.default_headers['P3P'] = 'CP=\"Not used\"'"
  end
end

#inject_into_application_controllerObject



43
44
45
46
47
48
49
# File 'lib/generators/shopify_app/install/install_generator.rb', line 43

def inject_into_application_controller
  inject_into_class(
    "app/controllers/application_controller.rb",
    'ApplicationController',
    "  include ShopifyApp::Controller\n"
  )
end