class Pollett::Generators::InstallGenerator
Private Class Methods
next_migration_number(dir)
click to toggle source
for generating a timestamp when using ‘create_migration`
# File lib/generators/pollett/install/install_generator.rb, line 118 def self.next_migration_number(dir) ActiveRecord::Generators::Base.next_migration_number(dir) end
Public Instance Methods
create_initializer()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 17 def create_initializer copy_file "initializer.rb", "config/initializers/pollett.rb" end
create_or_inject_into_user_model()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 27 def create_or_inject_into_user_model if File.exist? "app/models/user.rb" inject_into_file "app/models/user.rb", after: "class User < ActiveRecord::Base\n" do " include Pollett::User\n\n" end else copy_file "user.rb", "app/models/user.rb" end end
create_users_migration()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 37 def create_users_migration if users_table_exists? create_add_columns_migration else copy_migration "create_users.rb" end end
inject_into_application_controller()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 21 def inject_into_application_controller inject_into_class "app/controllers/application_controller.rb", ApplicationController do " include Pollett::Controller\n" end end
install_migrations()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 45 def install_migrations Dir.chdir(Rails.root) { `rake pollett:install:migrations` } end
mount()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 11 def mount inject_into_file "config/routes.rb", after: "Rails.application.routes.draw do\n" do " mount Pollett::Engine => \"/\"\n\n" end end
Private Instance Methods
copy_migration(migration_name, config = {})
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 85 def copy_migration(migration_name, config = {}) unless migration_exists?(migration_name) migration_template( "db/migrate/#{migration_name}", "db/migrate/#{migration_name}", config ) end end
create_add_columns_migration()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 54 def create_add_columns_migration if migration_needed? config = { new_columns: new_columns, new_indexes: new_indexes } copy_migration("add_pollett_to_users.rb", config) end end
existing_migrations()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 99 def existing_migrations @existing_migrations ||= Dir.glob("db/migrate/*.rb").map do |file| migration_name_without_timestamp(file) end end
existing_users_columns()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 109 def existing_users_columns ActiveRecord::Base.connection.columns(:users).map(&:name) end
existing_users_indexes()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 113 def existing_users_indexes ActiveRecord::Base.connection.indexes(:users).map(&:name) end
migration_exists?(name)
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 95 def migration_exists?(name) existing_migrations.include?(name) end
migration_name_without_timestamp(name)
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 105 def migration_name_without_timestamp(name) name.sub(%r{^.*(db/migrate/)(?:\d+_)?}, "") end
migration_needed?()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 65 def migration_needed? new_columns.any? || new_indexes.any? end
new_columns()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 69 def new_columns @new_columns ||= { email: "t.string :name, null: false", email: "t.string :email, null: false", password_digest: "t.string :password_digest, null: false", reset_token: "t.string :reset_token" }.reject { |column| existing_users_columns.include?(column.to_s) } end
new_indexes()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 78 def new_indexes @new_indexes ||= { index_users_on_email: "add_index :users, :email, unique: true", index_users_on_reset_token: "add_index :users, :reset_token, unique: true" }.reject { |index| existing_users_indexes.include?(index.to_s) } end
users_table_exists?()
click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 50 def users_table_exists? ActiveRecord::Base.connection.table_exists?(:users) end