class Spina::InstallGenerator
Public Instance Methods
add_route()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 15 def add_route return if Rails.env.production? return if Rails.application.routes.routes.detect { |route| route.app.app == Spina::Engine } route "mount Spina::Engine => '/'" end
bootstrap_spina()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 70 def bootstrap_spina rake 'spina:bootstrap' end
copy_migrations()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 21 def copy_migrations return if Rails.env.production? rake 'spina:install:migrations' end
copy_template_files()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 49 def copy_template_files theme = ::Spina::Account.first.theme if theme.in? ['default', 'demo'] template "config/initializers/themes/#{theme}.rb" directory "app/views/#{theme}" directory "app/views/layouts/#{theme}" end Spina::THEMES.clear Dir[Rails.root.join('config', 'initializers', 'themes', '*.rb')].each { |file| load file } end
create_account()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 30 def create_account return if ::Spina::Account.exists? && !no?('An account already exists. Skip? [Yn]') name = ::Spina::Account.first.try(:name) || 'MySite' name = ask("What would you like to name your website? [#{name}]").presence || name account = ::Spina::Account.first_or_create.update_attribute(:name, name) end
create_initializer_file()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 5 def create_initializer_file return if Rails.env.production? template 'config/initializers/spina.rb' end
create_mobility_initializer_file()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 10 def create_mobility_initializer_file return if Rails.env.production? template 'config/initializers/mobility.rb' end
create_user()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 60 def create_user return if ::Spina::User.exists? && !no?('A user already exists. Skip? [Yn]') email = 'admin@domain.com' email = ask("Please enter an email address for your first user: [#{email}]").presence || email password = 'password' password = ask("Create a temporary password: [#{password}]").presence || password @temporary_password = password ::Spina::User.create name: 'admin', email: email, password: password, admin: true end
feedback()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 74 def feedback puts puts ' Your Spina site has been succesfully installed! ' puts puts ' Restart your server and visit http://localhost:3000 in your browser!' puts " The admin backend is located at http://localhost:3000/#{Spina.config.backend_path}." puts puts " Site name : #{::Spina::Account.first.name}" puts " Active theme : #{::Spina::Account.first.theme}" puts " User email : #{::Spina::User.first.email}" puts " User password : #{@temporary_password}" puts end
run_migrations()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 26 def run_migrations rake 'db:migrate' end
set_theme()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 37 def set_theme account = ::Spina::Account.first return if account.theme.present? && !no?("Theme '#{account.theme} is set. Skip? [Yn]") theme = begin theme = account.theme || themes.first theme = ask("What theme do you want to use? (#{themes.join('/')}) [#{theme}]").presence || theme end until theme.in? themes account.update_attribute(:theme, theme) end
Private Instance Methods
themes()
click to toggle source
# File lib/generators/spina/install_generator.rb, line 90 def themes themes = Spina::Theme.all.map(&:name) themes | ['default', 'demo'] end