class UserTimeZones::Generators::InstallGenerator

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/generators/user_time_zones/install/install_generator.rb, line 25
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/user_time_zones/install/install_generator.rb, line 81
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/user_time_zones/install/install_generator.rb, line 37
def copy_migration_files
  copy_migration 'add_time_zone_to_users.rb'
end
inject_into_application_controller() click to toggle source
# File lib/generators/user_time_zones/install/install_generator.rb, line 47
def inject_into_application_controller
  inject_into_class(
    'app/controllers/application_controller.rb',
    ApplicationController,
    "  include UserTimeZones::Controller\n"
  )
end
inject_into_user_model() click to toggle source
# File lib/generators/user_time_zones/install/install_generator.rb, line 41
def inject_into_user_model
  if File.exist? model_path
    inject_into_class(model_path, model_class_name, "  include UserTimeZones::User\n")
  end
end
inject_javascript() click to toggle source
# File lib/generators/user_time_zones/install/install_generator.rb, line 55
def inject_javascript
  append_to_file 'app/assets/javascripts/application.js',
                 "//= require user_time_zones\n"
end
verify() click to toggle source
# File lib/generators/user_time_zones/install/install_generator.rb, line 30
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/user_time_zones/install/install_generator.rb, line 62
def copy_migration(migration_name, config = {})
  # puts "migration_version: #{migration_version}"
  unless migration_exists?(migration_name)
    migration_template(
      "db/migrate/#{migration_name}",
      "db/migrate/#{migration_name}",
      config.merge(migration_version: migration_version)
    )
  end
end
existing_migrations() click to toggle source
# File lib/generators/user_time_zones/install/install_generator.rb, line 89
def existing_migrations
  @existing_migrations ||= Dir.glob('db/migrate/*.rb').map do |file|
    migration_name_without_timestamp(file)
  end
end
migration_exists?(name) click to toggle source
# File lib/generators/user_time_zones/install/install_generator.rb, line 85
def migration_exists?(name)
  existing_migrations.include?(name)
end
migration_name_without_timestamp(file) click to toggle source
# File lib/generators/user_time_zones/install/install_generator.rb, line 95
def migration_name_without_timestamp(file)
  file.sub(%r{^.*(db/migrate/)(?:\d+_)?}, '')
end
migration_version() click to toggle source

If Rails 5, then include the migration version. Rails 4, no version.

# File lib/generators/user_time_zones/install/install_generator.rb, line 74
def migration_version
  if Rails.version >= '5.0.0'
    "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
  end
end