Class: BpluserGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- BpluserGenerator
- Includes:
- Rails::Generators::Migration
- Defined in:
- lib/generators/bpluser/bpluser_generator.rb
Class Method Summary collapse
-
.next_migration_number(path) ⇒ Object
Implement the required interface for Rails::Generators::Migration.
Instance Method Summary collapse
-
#add_the_gems ⇒ Object
Add gem dependenceies.
- #check_arguments ⇒ Object
-
#copy_migrations ⇒ Object
Setup the database migrations.
-
#create_configuration_files ⇒ Object
Copy all files in templates/config directory to host config.
-
#generate_bpl_institution_management ⇒ Object
Install BPL Institution management?.
-
#generate_devise_assets ⇒ Object
Install Devise?.
-
#generate_hydra_role_management ⇒ Object
Install Hydra Role Management?.
- #inject_bpluser_routes ⇒ Object
Class Method Details
.next_migration_number(path) ⇒ Object
Implement the required interface for Rails::Generators::Migration. taken from github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
24 25 26 27 28 29 30 31 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 24 def self.next_migration_number(path) unless @prev_migration_nr @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i else @prev_migration_nr += 1 end @prev_migration_nr.to_s end |
Instance Method Details
#add_the_gems ⇒ Object
Add gem dependenceies
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 65 def add_the_gems gem 'omniauth' gem 'omniauth-ldap' gem 'omniauth-facebook' gem 'omniauth-polaris', :git => 'https://github.com/boston-library/omniauth-polaris.git' gem 'omniauth-password' gem 'bootstrap_forms' Bundler.with_clean_env do run "bundle install" end end |
#check_arguments ⇒ Object
33 34 35 36 37 38 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 33 def check_arguments #if File.exists?("app/models/#{model_name}.rb") and options[:devise] #puts "Because you have selected \"#{model_name}\", which is an existing class, you will need to install devise manually and then run this generator without the Devise option. You can find additional information here: https://github.com/plataformatec/devise. \n Please be sure to include a to_s method in #{model_name} that returns the users name or email, as this will be used by Blacklight to provide a link to user specific information." #exit #end end |
#copy_migrations ⇒ Object
Setup the database migrations
105 106 107 108 109 110 111 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 105 def copy_migrations # Can't get this any more DRY, because we need this order. better_migration_template "add_fields_to_user.rb" better_migration_template "add_folders_to_user.rb" better_migration_template "add_folder_items_to_folder.rb" #better_migration_template "create_institutions_for_users.rb" end |
#create_configuration_files ⇒ Object
Copy all files in templates/config directory to host config
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 79 def create_configuration_files copy_file "config/initializers/devise.rb", "config/initializers/devise.rb" copy_file "controllers/users/omniauth_callbacks_controller.rb", "app/controllers/users/omniauth_callbacks_controller.rb" copy_file "controllers/users/registrations_controller.rb", "app/controllers/users/registrations_controller.rb" copy_file "controllers/users/sessions_controller.rb", "app/controllers/users/sessions_controller.rb" copy_file "models/user.rb", "app/models/user.rb" copy_file "models/ability.rb", "app/models/ability.rb" copy_file "views/devise/registrations/new.html.erb", "app/views/devise/registrations/new.html.erb" copy_file "views/devise/registrations/edit.html.erb", "app/views/devise/registrations/edit.html.erb" copy_file "views/devise/sessions/new.html.erb", "app/views/devise/sessions/new.html.erb" if !File.exists?("config/hydra-ldap.yml") copy_file "config/hydra-ldap.yml", "config/hydra-ldap.yml" end if !File.exists?("config/omniauth-polaris.yml") copy_file "config/omniauth-polaris.yml", "config/omniauth-polaris.yml" end if !File.exists?("config/omniauth-facebook.yml") copy_file "config/omniauth-facebook.yml", "config/omniauth-facebook.yml" end end |
#generate_bpl_institution_management ⇒ Object
Install BPL Institution management?
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 136 def generate_bpl_institution_management if [:institution_management] if Rails::VERSION::MAJOR == 4 #gem "devise", github:'plataformatec/devise', branch: 'rails4' else gem 'bpl-institution-management', :git => 'https://github.com/boston-library/bpl-institution-management.git' end Bundler.with_clean_env do run "bundle install" end generate "institutions" Bundler.with_clean_env do run "bundle install" end end end |
#generate_devise_assets ⇒ Object
Install Devise?
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 41 def generate_devise_assets if [:devise] if Rails::VERSION::MAJOR == 4 gem "devise", github:'plataformatec/devise', branch: 'rails4' else gem "devise" end gem "devise-guests", "~> 0.3" Bundler.with_clean_env do run "bundle install" end generate "devise:install" generate "devise", model_name.classify generate "devise_guests", model_name.classify generate "devise:views" end end |
#generate_hydra_role_management ⇒ Object
Install Hydra Role Management?
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 115 def generate_hydra_role_management if [:role_management] if Rails::VERSION::MAJOR == 4 #gem "devise", github:'plataformatec/devise', branch: 'rails4' else gem "hydra-role-management" end Bundler.with_clean_env do run "bundle install" end generate "roles" Bundler.with_clean_env do run "bundle install" end end end |
#inject_bpluser_routes ⇒ Object
157 158 159 160 161 162 163 164 165 166 |
# File 'lib/generators/bpluser/bpluser_generator.rb', line 157 def inject_bpluser_routes # These will end up in routes.rb file in reverse order # we add em, since each is added at the top of file. # we want "root" to be FIRST for optimal url generation. #route('devise_for :users, :controllers => { :omniauth_callbacks => "bpluser/users/omniauth_callbacks" }') gsub_file("config/routes.rb", "devise_for :users", "") route('devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", :registrations => "users/registrations", :sessions => "users/sessions"}') route('mount Bpluser::Engine => "/bpluser"') route('Bpluser.add_routes(self)') end |