class Authenticate::Generators::InstallGenerator
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/generators/authenticate/install/install_generator.rb, line 24 def initialize(*) super assign_names!(model_class_name) end
Private Class Methods
next_migration_number(dir)
click to toggle source
for generating a timestamp when using `create_migration`
# File lib/generators/authenticate/install/install_generator.rb, line 182 def self.next_migration_number(dir) ActiveRecord::Generators::Base.next_migration_number(dir) end
Public Instance Methods
copy_migration_files()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 53 def copy_migration_files copy_migration 'add_authenticate_brute_force_to_users.rb' copy_migration 'add_authenticate_timeoutable_to_users.rb' copy_migration 'add_authenticate_password_reset_to_users.rb' end
create_authenticate_user_migration()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 45 def create_authenticate_user_migration if users_table_exists? create_add_columns_migration else create_new_users_migration end end
create_initializer()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 67 def create_initializer copy_file 'authenticate.rb', 'config/initializers/authenticate.rb' if options[:model] inject_into_file( 'config/initializers/authenticate.rb', " config.user_model = '#{options[:model]}'\n", after: "Authenticate.configure do |config|\n" ) end if options.key? :allow_sign_up inject_into_file( 'config/initializers/authenticate.rb', " config.allow_sign_up = #{options['allow_sign_up']}\n", after: "Authenticate.configure do |config|\n" ) end end
create_or_inject_into_user_model()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 36 def create_or_inject_into_user_model if File.exist? model_path inject_into_class(model_path, model_class_name, " include Authenticate::User\n\n") else @model_base_class = model_base_class template 'user.rb.erb', 'app/models/user.rb' end end
inject_into_application_controller()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 59 def inject_into_application_controller inject_into_class( 'app/controllers/application_controller.rb', ApplicationController, " include Authenticate::Controller\n\n" ) end
verify()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 29 def verify if options[:model] && !File.exist?(model_path) puts "Exiting: the model class you specified, #{options[:model]}, is not found." exit 1 end end
Private Instance Methods
copy_migration(migration_name, config = {})
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 106 def copy_migration(migration_name, config = {}) unless migration_exists?(migration_name) migration_template( "db/migrate/#{migration_name}", "db/migrate/#{migration_name}", config.merge(migration_version: migration_version) ) end end
create_add_columns_migration()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 96 def create_add_columns_migration if migration_needed? config = { new_columns: new_columns, new_indexes: new_indexes } copy_migration('add_authenticate_to_users.rb', config) end end
create_new_users_migration()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 88 def create_new_users_migration config = { new_columns: new_columns, new_indexes: new_indexes } copy_migration 'create_users.rb', config end
existing_migrations()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 146 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/authenticate/install/install_generator.rb, line 171 def existing_users_columns return [] unless users_table_exists? ActiveRecord::Base.connection.columns(table_name).map(&:name) end
existing_users_indexes()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 176 def existing_users_indexes return [] unless users_table_exists? ActiveRecord::Base.connection.indexes(table_name).map(&:name) end
migration_exists?(name)
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 142 def migration_exists?(name) existing_migrations.include?(name) end
migration_name_without_timestamp(file)
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 152 def migration_name_without_timestamp(file) file.sub(%r{^.*(db/migrate/)(?:\d+_)?}, '') end
migration_needed?()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 116 def migration_needed? new_columns.any? || new_indexes.any? end
migration_version()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 190 def migration_version if Rails.version >= '5.0.0' "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" end end
model_base_class()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 186 def model_base_class (Rails.version >= '5.0.0') ? 'ApplicationRecord' : 'ActiveRecord::Base' end
new_columns()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 120 def new_columns @new_columns ||= { email: 't.string :email', encrypted_password: 't.string :encrypted_password, limit: 128', session_token: 't.string :session_token, limit: 128', # trackable, lifetimed current_sign_in_at: 't.datetime :current_sign_in_at', current_sign_in_ip: 't.string :current_sign_in_ip, limit: 128', last_sign_in_at: 't.datetime :last_sign_in_at', last_sign_in_ip: 't.string :last_sign_in_ip, limit: 128', sign_in_count: 't.integer :sign_in_count' }.reject { |column| existing_users_columns.include?(column.to_s) } end
new_indexes()
click to toggle source
# File lib/generators/authenticate/install/install_generator.rb, line 135 def new_indexes @new_indexes ||= { index_users_on_email: "add_index :#{table_name}, :email, unique: true", index_users_on_session_token: "add_index :#{table_name}, :session_token" }.reject { |index| existing_users_indexes.include?(index.to_s) } end
users_table_exists?()
click to toggle source
def users_table_exists?
ActiveRecord::Base.connection.table_exists?(table_name)
end
# File lib/generators/authenticate/install/install_generator.rb, line 160 def users_table_exists? # Rails 5 uses 'data sources' if ActiveRecord::Base.connection.respond_to?(:data_source_exists?) ActiveRecord::Base.connection.data_source_exists?(table_name) else # Rails 4 uses 'tables' ActiveRecord::Base.connection.table_exists?(table_name) end end