Class: Caffeinate::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Caffeinate::Generators::InstallGenerator
- Defined in:
- lib/generators/caffeinate/install_generator.rb
Overview
Installs Caffeinate
Class Method Summary collapse
Instance Method Summary collapse
- #column_type_for_polymorphic ⇒ Object
-
#copy_application_campaign ⇒ Object
:nodoc:.
-
#copy_initializer ⇒ Object
:nodoc:.
-
#copy_migrations ⇒ Object
:nodoc:.
- #enable_pgcrypto? ⇒ Boolean
- #foreign_key_type ⇒ Object
- #install_routes ⇒ Object
- #migration_version ⇒ Object
- #primary_key_option ⇒ Object
- #primary_key_type ⇒ Object
- #rails5_and_up? ⇒ Boolean
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_polymorphic ⇒ Object
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_campaign ⇒ Object
: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_initializer ⇒ Object
: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_migrations ⇒ Object
: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
44 45 46 |
# File 'lib/generators/caffeinate/install_generator.rb', line 44 def enable_pgcrypto? primary_key_type == :uuid && ![:skip_pgcrypto] end |
#foreign_key_type ⇒ Object
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_routes ⇒ Object
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_version ⇒ Object
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_option ⇒ Object
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_type ⇒ Object
20 21 22 23 24 |
# File 'lib/generators/caffeinate/install_generator.rb', line 20 def primary_key_type return :uuid if [:uuid] return [:primary_key_type].to_sym if [:primary_key_type] nil end |
#rails5_and_up? ⇒ Boolean
78 79 80 |
# File 'lib/generators/caffeinate/install_generator.rb', line 78 def rails5_and_up? Rails::VERSION::MAJOR >= 5 end |