Class: Alchemy::Solidus::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Alchemy::Solidus::InstallGenerator
- Defined in:
- lib/generators/alchemy/solidus/install/install_generator.rb
Constant Summary collapse
- SPREE_MOUNT_REGEXP =
/mount\sSpree::Core::Engine.*$/
Instance Method Summary collapse
- #append_assets ⇒ Object
- #create_admin_user ⇒ Object
- #inject_admin_tab ⇒ Object
- #inject_routes ⇒ Object
- #run_alchemy_devise_installer ⇒ Object
- #run_alchemy_installer ⇒ Object
- #run_spree_custom_user_generator ⇒ Object
- #set_root_route ⇒ Object
Instance Method Details
#append_assets ⇒ Object
129 130 131 132 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 129 def append_assets append_file "vendor/assets/javascripts/alchemy/admin/all.js", "//= require alchemy/solidus/admin.js" end |
#create_admin_user ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 75 def create_admin_user if alchemy_devise_present? && ![:skip_alchemy_user_generator] && Alchemy::User.count.zero? login = ENV.fetch('ALCHEMY_ADMIN_USER_LOGIN', 'admin') email = ENV.fetch('ALCHEMY_ADMIN_USER_EMAIL', '[email protected]') password = ENV.fetch('ALCHEMY_ADMIN_USER_PASSWORD', 'test1234') unless [:auto_accept] login = ask("\nEnter the username for the admin user", default: login) email = ask("Enter the email for the admin user", default: email) password = ask("Enter the password for the admin user", default: password) end Alchemy::User.create!( login: login, email: email, password: password, password_confirmation: password, alchemy_roles: 'admin', spree_roles: [Spree::Role.find_or_create_by!(name: 'admin')] ) end end |
#inject_admin_tab ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 58 def inject_admin_tab inject_into_file 'config/initializers/spree.rb', {after: "Spree::Backend::Config.configure do |config|\n"} do " \\ # AlchemyCMS admin tabs\n \\ config.menu_items << config.class::MenuItem.new(\n \\ [:pages, :sites, :languages, :tags, :users, :pictures, :attachments],\n \\ 'copy',\n \\ label: :cms,\n \\ condition: -> { can?(:index, :alchemy_admin_dashboard) },\n \\ partial: 'spree/admin/shared/alchemy_sub_menu',\n \\ url: '/admin/pages',\n \\ match_path: '/pages'\n \\ )\n ADMIN_TAB\n end\nend\n" |
#inject_routes ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 97 def inject_routes routes_file_path = Rails.root.join('config', 'routes.rb') mountpoint = '/' unless [:auto_accept] mountpoint = ask("\nAt which path do you want to mount AlchemyCMS at?", default: mountpoint) end if File.read(routes_file_path).match SPREE_MOUNT_REGEXP sentinel = SPREE_MOUNT_REGEXP else sentinel = "Rails.application.routes.draw do\n" end inject_into_file routes_file_path, {after: sentinel} do "\n mount Alchemy::Engine, at: '/#{mountpoint.chomp('/')}'\n" end end |
#run_alchemy_devise_installer ⇒ Object
39 40 41 42 43 44 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 39 def run_alchemy_devise_installer if alchemy_devise_present? && ![:skip_alchemy_devise_installer] arguments = [:auto_accept] ? ['--force'] : [] Alchemy::Devise::Generators::InstallGenerator.start(arguments) end end |
#run_alchemy_installer ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 30 def run_alchemy_installer unless [:skip_alchemy_installer] arguments = [:auto_accept] ? ['--skip-demo-files', '--force'] : [] Alchemy::Generators::InstallGenerator.start(arguments) rake('railties:install:migrations', abort_on_failure: true) rake('db:migrate', abort_on_failure: true) end end |
#run_spree_custom_user_generator ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 46 def run_spree_custom_user_generator if alchemy_devise_present? && ![:skip_spree_custom_user_generator] arguments = [:auto_accept] ? ['Alchemy::User', '--force'] : ['Alchemy::User'] Spree::CustomUserGenerator.start(arguments) gsub_file 'lib/spree/authentication_helpers.rb', /main_app\./, 'Alchemy.' if SolidusSupport.solidus_gem_version < Gem::Version.new('2.5.0') gsub_file 'config/initializers/spree.rb', /Spree\.user_class.?=.?.+$/, 'Spree.user_class = "Alchemy::User"' end rake('db:migrate', abort_on_failure: true) end end |
#set_root_route ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/generators/alchemy/solidus/install/install_generator.rb', line 113 def set_root_route routes_file_path = Rails.root.join('config', 'routes.rb') if [:auto_accept] || yes?("\nDo you want Alchemy to handle the root route '/'? (y/n)") sentinel = "Rails.application.routes.draw do\n" inject_into_file routes_file_path, {after: sentinel} do " \\ # Let AlchemyCMS handle the root route\n \\ root to: 'alchemy/pages#index'\n ROOT_ROUTE\n end\n copy_file('db/seeds/alchemy/pages.yml')\n append_file(Rails.root.join('db', 'seeds.rb'), \"Alchemy::Seeder.seed!\\n\")\n rake('alchemy:db:seed', abort_on_failure: true)\n end\nend\n" |