Class: Caffeinate::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/caffeinate/install_generator.rb

Overview

Installs Caffeinate

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(_path) ⇒ Object

:nodoc:



63
64
65
66
67
68
69
70
# File 'lib/generators/caffeinate/install_generator.rb', line 63

def self.next_migration_number(_path)
  if @prev_migration_nr
    @prev_migration_nr += 1
  else
    @prev_migration_nr = Time.now.utc.strftime('%Y%m%d%H%M%S').to_i
  end
  @prev_migration_nr.to_s
end

Instance Method Details

#column_type_for_polymorphicObject



36
37
38
39
40
41
42
# File 'lib/generators/caffeinate/install_generator.rb', line 36

def column_type_for_polymorphic
  case primary_key_type
  when :uuid then :uuid
  when :bigint then :bigint
  else :integer
  end
end

#copy_application_campaignObject

:nodoc:



54
55
56
# File 'lib/generators/caffeinate/install_generator.rb', line 54

def copy_application_campaign
  template 'application_dripper.rb', 'app/drippers/application_dripper.rb'
end

#copy_initializerObject

:nodoc:



49
50
51
# File 'lib/generators/caffeinate/install_generator.rb', line 49

def copy_initializer
  template 'caffeinate.rb', 'config/initializers/caffeinate.rb'
end

#copy_migrationsObject

:nodoc:



83
84
85
86
87
# File 'lib/generators/caffeinate/install_generator.rb', line 83

def copy_migrations
  template 'migrations/create_caffeinate_campaigns.rb', "db/migrate/#{self.class.next_migration_number("")}_create_caffeinate_campaigns.rb"
  template 'migrations/create_caffeinate_campaign_subscriptions.rb', "db/migrate/#{self.class.next_migration_number("")}_create_caffeinate_campaign_subscriptions.rb"
  template 'migrations/create_caffeinate_mailings.rb', "db/migrate/#{self.class.next_migration_number("")}_create_caffeinate_mailings.rb"
end

#enable_pgcrypto?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/generators/caffeinate/install_generator.rb', line 44

def enable_pgcrypto?
  primary_key_type == :uuid && !options[:skip_pgcrypto]
end

#foreign_key_typeObject



31
32
33
34
# File 'lib/generators/caffeinate/install_generator.rb', line 31

def foreign_key_type
  return '' unless primary_key_type
  ", type: :#{primary_key_type}"
end

#install_routesObject



58
59
60
# File 'lib/generators/caffeinate/install_generator.rb', line 58

def install_routes
  inject_into_file 'config/routes.rb', "\n  mount ::Caffeinate::Engine => '/caffeinate'", after: /Rails.application.routes.draw do/
end

#migration_versionObject



72
73
74
75
76
# File 'lib/generators/caffeinate/install_generator.rb', line 72

def migration_version
  if rails5_and_up?
    "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
  end
end

#primary_key_optionObject



26
27
28
29
# File 'lib/generators/caffeinate/install_generator.rb', line 26

def primary_key_option
  return '' unless primary_key_type
  ", id: :#{primary_key_type}"
end

#primary_key_typeObject



20
21
22
23
24
# File 'lib/generators/caffeinate/install_generator.rb', line 20

def primary_key_type
  return :uuid if options[:uuid]
  return options[:primary_key_type].to_sym if options[:primary_key_type]
  nil
end

#rails5_and_up?Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/generators/caffeinate/install_generator.rb', line 78

def rails5_and_up?
  Rails::VERSION::MAJOR >= 5
end