class Clearance::Generators::InstallGenerator
Private Class Methods
next_migration_number(dir)
click to toggle source
for generating a timestamp when using `create_migration`
# File lib/generators/clearance/install/install_generator.rb, line 117 def self.next_migration_number(dir) ActiveRecord::Generators::Base.next_migration_number(dir) end
Public Instance Methods
create_clearance_initializer()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 10 def create_clearance_initializer copy_file 'clearance.rb', 'config/initializers/clearance.rb' end
create_clearance_migration()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 35 def create_clearance_migration if users_table_exists? create_add_columns_migration else copy_migration "create_users" end end
create_or_inject_clearance_into_user_model()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 22 def create_or_inject_clearance_into_user_model if File.exist? "app/models/user.rb" inject_into_file( "app/models/user.rb", " include Clearance::User\n\n", after: "class User < #{models_inherit_from}\n", ) else @inherit_from = models_inherit_from template("user.rb.erb", "app/models/user.rb") end end
display_readme_in_terminal()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 43 def display_readme_in_terminal readme 'README' end
inject_clearance_into_application_controller()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 14 def inject_clearance_into_application_controller inject_into_class( "app/controllers/application_controller.rb", ApplicationController, " include Clearance::Controller\n" ) end
Private Instance Methods
configured_key_type()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 131 def configured_key_type active_record = Rails.configuration.generators.active_record active_record ||= Rails.configuration.generators.options[:active_record] active_record[:primary_key_type] end
copy_migration(migration_name, config = {})
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 60 def copy_migration(migration_name, config = {}) unless migration_exists?(migration_name) migration_template( "db/migrate/#{migration_name}.rb.erb", "db/migrate/#{migration_name}.rb", config.merge(migration_version: migration_version), ) end end
create_add_columns_migration()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 49 def create_add_columns_migration if migration_needed? config = { new_columns: new_columns, new_indexes: new_indexes } copy_migration("add_clearance_to_users", config) end end
existing_migrations()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 94 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/clearance/install/install_generator.rb, line 108 def existing_users_columns ActiveRecord::Base.connection.columns(:users).map(&:name) end
existing_users_indexes()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 112 def existing_users_indexes ActiveRecord::Base.connection.indexes(:users).map(&:name) end
migration_exists?(name)
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 90 def migration_exists?(name) existing_migrations.include?(name) end
migration_name_without_timestamp(file)
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 100 def migration_name_without_timestamp(file) file.sub(%r{^.*(db/migrate/)(?:\d+_)?}, '') end
migration_needed?()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 70 def migration_needed? new_columns.any? || new_indexes.any? end
migration_primary_key_type_string()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 125 def migration_primary_key_type_string if configured_key_type ", id: :#{configured_key_type}" end end
migration_version()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 121 def migration_version "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" end
models_inherit_from()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 138 def models_inherit_from "ApplicationRecord" end
new_columns()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 74 def new_columns @new_columns ||= { email: 't.string :email', encrypted_password: 't.string :encrypted_password, limit: 128', confirmation_token: 't.string :confirmation_token, limit: 128', remember_token: 't.string :remember_token, limit: 128' }.reject { |column| existing_users_columns.include?(column.to_s) } end
new_indexes()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 83 def new_indexes @new_indexes ||= { index_users_on_email: 'add_index :users, :email', index_users_on_remember_token: 'add_index :users, :remember_token' }.reject { |index| existing_users_indexes.include?(index.to_s) } end
users_table_exists?()
click to toggle source
# File lib/generators/clearance/install/install_generator.rb, line 104 def users_table_exists? ActiveRecord::Base.connection.data_source_exists?(:users) end