Class: SolidusConfigurableKits::Generators::InstallGenerator

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

Constant Summary collapse

MOUNT_ROUTE =
"mount SolidusConfigurableKits::Engine"

Instance Method Summary collapse

Instance Method Details

#add_javascriptsObject



15
16
17
18
19
20
# File 'lib/generators/solidus_configurable_kits/install/install_generator.rb', line 15

def add_javascripts
  append_file 'vendor/assets/javascripts/spree/frontend/all.js',
    "//= require spree/frontend/solidus_configurable_kits\n"
  append_file 'vendor/assets/javascripts/spree/backend/all.js',
    "//= require spree/backend/solidus_configurable_kits\n"
end

#add_migrationsObject



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

def add_migrations
  run 'bin/rails railties:install:migrations FROM=solidus_configurable_kits'
end

#add_stylesheetsObject



22
23
24
25
# File 'lib/generators/solidus_configurable_kits/install/install_generator.rb', line 22

def add_stylesheets
  inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_configurable_kits\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
  inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_configurable_kits\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
end

#configure_pricing_optionsObject



31
32
33
34
35
# File 'lib/generators/solidus_configurable_kits/install/install_generator.rb', line 31

def configure_pricing_options
  inject_into_file 'config/initializers/spree.rb',
    "  config.variant_price_selector_class = \"SolidusConfigurableKits::PriceSelector\"\n",
    after: "Spree.config do |config|\n", verbose: true
end

#copy_initializerObject



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

def copy_initializer
  template 'initializer.rb', 'config/initializers/solidus_configurable_kits.rb'
end

#install_routesObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/generators/solidus_configurable_kits/install/install_generator.rb', line 46

def install_routes
  routes_file_path = File.join('config', 'routes.rb')
  unless File.read(routes_file_path).include? MOUNT_ROUTE
    insert_into_file routes_file_path, after: "Rails.application.routes.draw do\n" do
      <<-RUBY
  # This line mounts Solidus's routes at the root of your application.
  # This means, any requests to URLs such as /products, will go to Spree::ProductsController.
  # If you would like to change where this engine is mounted, simply change the :at option to something different.
  #
  # We ask that you don't use the :as option here, as Solidus relies on it being the default of "spree"
  #{MOUNT_ROUTE}, at: '/'

      RUBY
    end
  end

  return if options[:quiet]

  # rubocop:disable Rails/Output
  puts "*" * 50
  puts "We added the following line to your application's config/routes.rb file:"
  puts " "
  puts "    #{MOUNT_ROUTE}, at: '/'"
  # rubocop:enable Rails/Output
end

#run_migrationsObject



37
38
39
40
41
42
43
44
# File 'lib/generators/solidus_configurable_kits/install/install_generator.rb', line 37

def run_migrations
  run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]')) # rubocop:disable Layout/LineLength
  if run_migrations
    run 'bin/rails db:migrate'
  else
    puts 'Skipping bin/rails db:migrate, don\'t forget to run it!' # rubocop:disable Rails/Output
  end
end