lib/generators/authenticate/install/install_generator.rb in authenticate-0.2.1 vs lib/generators/authenticate/install/install_generator.rb in authenticate-0.2.2

- old
+ new

@@ -1,33 +1,35 @@ require 'rails/generators/base' require 'rails/generators/active_record' +require 'generators/authenticate/helpers' module Authenticate module Generators class InstallGenerator < Rails::Generators::Base include Rails::Generators::Migration + include Authenticate::Generators::Helpers + source_root File.expand_path('../templates', __FILE__) - def create_initializer - copy_file 'authenticate.rb', 'config/initializers/authenticate.rb' + class_option :model, optional: true, type: :string, banner: 'model', + desc: "Specify the model class name if you will use anything other than 'User'" + + def initialize(*) + super + assign_names!(model_class_name) end - def inject_into_application_controller - inject_into_class( - "app/controllers/application_controller.rb", - ApplicationController, - " include Authenticate::Controller\n" - ) + def verify + if options[:model] && !File.exists?(model_path) + puts "Exiting: the model class you specified, #{options[:model]}, is not found." + exit 1 + end end def create_or_inject_into_user_model - if File.exist? "app/models/user.rb" - inject_into_file( - 'app/models/user.rb', - ' include Authenticate::User\n\n', - after: 'class User < ActiveRecord::Base\n' - ) + if File.exist? model_path + inject_into_class(model_path, model_class_name, " include Authenticate::User\n\n") else copy_file 'user.rb', 'app/models/user.rb' end end @@ -43,10 +45,30 @@ 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 + def inject_into_application_controller + inject_into_class( + 'app/controllers/application_controller.rb', + ApplicationController, + " include Authenticate::Controller\n\n" + ) + end + + 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 + end + + private def create_new_users_migration config = { new_columns: new_columns, @@ -94,12 +116,12 @@ }.reject { |column| existing_users_columns.include?(column.to_s) } end def new_indexes @new_indexes ||= { - index_users_on_email: 'add_index :users, :email', - index_users_on_session_token: 'add_index :users, :session_token' + index_users_on_email: "add_index :#{table_name}, :email", + index_users_on_session_token: "add_index :#{table_name}, :session_token" }.reject { |index| existing_users_indexes.include?(index.to_s) } end def migration_exists?(name) existing_migrations.include?(name) @@ -114,20 +136,20 @@ def migration_name_without_timestamp(file) file.sub(%r{^.*(db/migrate/)(?:\d+_)?}, '') end def users_table_exists? - ActiveRecord::Base.connection.table_exists?(:users) + ActiveRecord::Base.connection.table_exists?(table_name) end def existing_users_columns return [] unless users_table_exists? - ActiveRecord::Base.connection.columns(:users).map(&:name) + ActiveRecord::Base.connection.columns(table_name).map(&:name) end def existing_users_indexes return [] unless users_table_exists? - ActiveRecord::Base.connection.indexes(:users).map(&:name) + ActiveRecord::Base.connection.indexes(table_name).map(&:name) end # for generating a timestamp when using `create_migration` def self.next_migration_number(dir) ActiveRecord::Generators::Base.next_migration_number(dir)