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)