class Sorcery::Generators::InstallGenerator

Public Class Methods

next_migration_number(dirname) click to toggle source

Define the next_migration_number method (necessary for the migration_template method to work)

# File lib/generators/sorcery/install_generator.rb, line 77
def self.next_migration_number(dirname)
  if ActiveRecord::Base.timestamped_migrations
    sleep 1 # make sure each time we get a different timestamp
    Time.new.utc.strftime('%Y%m%d%H%M%S')
  else
    format('%.3d', (current_migration_number(dirname) + 1))
  end
end

Public Instance Methods

check_deprecated_options() click to toggle source
# File lib/generators/sorcery/install_generator.rb, line 23
def check_deprecated_options
  return unless options[:migrations]

  warn('[DEPRECATED] `--migrations` option is deprecated, please use `--only-submodules` instead')
end
configure_initializer_file() click to toggle source
# File lib/generators/sorcery/install_generator.rb, line 34
def configure_initializer_file
  # Add submodules to the initializer file.
  return unless submodules

  submodule_names = submodules.collect { |submodule| ':' + submodule }

  gsub_file sorcery_config_path, /submodules = \[.*\]/ do |str|
    current_submodule_names = (str =~ /\[(.*)\]/ ? Regexp.last_match(1) : '').delete(' ').split(',')
    "submodules = [#{(current_submodule_names | submodule_names).join(', ')}]"
  end
end
configure_model() click to toggle source
# File lib/generators/sorcery/install_generator.rb, line 46
def configure_model
  # Generate the model and add 'authenticates_with_sorcery!' unless you passed --only-submodules
  return if only_submodules?

  generate "model #{model_class_name} --skip-migration"
  inject_sorcery_to_model
end
copy_initializer_file() click to toggle source

Copy the initializer file to config/initializers folder.

# File lib/generators/sorcery/install_generator.rb, line 30
def copy_initializer_file
  template 'initializer.rb', sorcery_config_path unless only_submodules?
end
copy_migration_files() click to toggle source

Copy the migrations files to db/migrate folder

# File lib/generators/sorcery/install_generator.rb, line 61
def copy_migration_files
  # Copy core migration file in all cases except when you pass --only-submodules.
  return unless defined?(ActiveRecord)

  migration_template 'migration/core.rb', 'db/migrate/sorcery_core.rb', migration_class_name: migration_class_name unless only_submodules?

  return unless submodules

  submodules.each do |submodule|
    unless %w[http_basic_auth session_timeout core].include?(submodule)
      migration_template "migration/#{submodule}.rb", "db/migrate/sorcery_#{submodule}.rb", migration_class_name: migration_class_name
    end
  end
end
inject_sorcery_to_model() click to toggle source
# File lib/generators/sorcery/install_generator.rb, line 54
def inject_sorcery_to_model
  indents = '  ' * (namespaced? ? 2 : 1)

  inject_into_class(model_path, model_class_name, "#{indents}authenticates_with_sorcery!\n")
end

Private Instance Methods

migration_class_name() click to toggle source
# File lib/generators/sorcery/install_generator.rb, line 92
def migration_class_name
  if Rails::VERSION::MAJOR >= 5
    "ActiveRecord::Migration[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
  else
    'ActiveRecord::Migration'
  end
end
only_submodules?() click to toggle source
# File lib/generators/sorcery/install_generator.rb, line 88
def only_submodules?
  options[:migrations] || options[:only_submodules]
end