class Pollett::Generators::InstallGenerator

Private Class Methods

next_migration_number(dir) click to toggle source

for generating a timestamp when using ‘create_migration`

# File lib/generators/pollett/install/install_generator.rb, line 118
def self.next_migration_number(dir)
  ActiveRecord::Generators::Base.next_migration_number(dir)
end

Public Instance Methods

create_initializer() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 17
def create_initializer
  copy_file "initializer.rb", "config/initializers/pollett.rb"
end
create_or_inject_into_user_model() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 27
def create_or_inject_into_user_model
  if File.exist? "app/models/user.rb"
    inject_into_file "app/models/user.rb", after: "class User < ActiveRecord::Base\n" do
      "  include Pollett::User\n\n"
    end
  else
    copy_file "user.rb", "app/models/user.rb"
  end
end
create_users_migration() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 37
def create_users_migration
  if users_table_exists?
    create_add_columns_migration
  else
    copy_migration "create_users.rb"
  end
end
inject_into_application_controller() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 21
def inject_into_application_controller
  inject_into_class "app/controllers/application_controller.rb", ApplicationController do
    "  include Pollett::Controller\n"
  end
end
install_migrations() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 45
def install_migrations
  Dir.chdir(Rails.root) { `rake pollett:install:migrations` }
end
mount() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 11
def mount
  inject_into_file "config/routes.rb", after: "Rails.application.routes.draw do\n" do
    "  mount Pollett::Engine => \"/\"\n\n"
  end
end

Private Instance Methods

copy_migration(migration_name, config = {}) click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 85
def copy_migration(migration_name, config = {})
  unless migration_exists?(migration_name)
    migration_template(
      "db/migrate/#{migration_name}",
      "db/migrate/#{migration_name}",
      config
    )
  end
end
create_add_columns_migration() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 54
def create_add_columns_migration
  if migration_needed?
    config = {
      new_columns: new_columns,
      new_indexes: new_indexes
    }

    copy_migration("add_pollett_to_users.rb", config)
  end
end
existing_migrations() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 99
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/pollett/install/install_generator.rb, line 109
def existing_users_columns
  ActiveRecord::Base.connection.columns(:users).map(&:name)
end
existing_users_indexes() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 113
def existing_users_indexes
  ActiveRecord::Base.connection.indexes(:users).map(&:name)
end
migration_exists?(name) click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 95
def migration_exists?(name)
  existing_migrations.include?(name)
end
migration_name_without_timestamp(name) click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 105
def migration_name_without_timestamp(name)
  name.sub(%r{^.*(db/migrate/)(?:\d+_)?}, "")
end
migration_needed?() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 65
def migration_needed?
  new_columns.any? || new_indexes.any?
end
new_columns() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 69
def new_columns
  @new_columns ||= {
    email: "t.string :name, null: false",
    email: "t.string :email, null: false",
    password_digest: "t.string :password_digest, null: false",
    reset_token: "t.string :reset_token"
  }.reject { |column| existing_users_columns.include?(column.to_s) }
end
new_indexes() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 78
def new_indexes
  @new_indexes ||= {
    index_users_on_email: "add_index :users, :email, unique: true",
    index_users_on_reset_token: "add_index :users, :reset_token, unique: true"
  }.reject { |index| existing_users_indexes.include?(index.to_s) }
end
users_table_exists?() click to toggle source
# File lib/generators/pollett/install/install_generator.rb, line 50
def users_table_exists?
  ActiveRecord::Base.connection.table_exists?(:users)
end