Class: RailsSettings::InstallGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/settings/install_generator.rb

Constant Summary collapse

@@migrations =
false

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(dirname) ⇒ Object

:nodoc:



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/generators/settings/install_generator.rb', line 28

def self.next_migration_number(dirname) #:nodoc:
  if timestamped_migrations
    if @@migrations
      (current_migration_number(dirname) + 1)
    else
      @@migrations = true
      Time.now.utc.strftime("%Y%m%d%H%M%S")
    end
  else
    format "%.3d", current_migration_number(dirname) + 1
  end
end

.timestamped_migrations ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/generators/settings/install_generator.rb', line 18

def self.timestamped_migrations
  # ActiveRecord.timestamped_migrations was added in Rails 7.1, and the
  # ActiveRecord::Base version was removed in Rails 7.2.
  if ActiveRecord.respond_to?(:timestamped_migrations)
    ActiveRecord.timestamped_migrations
  else
    ActiveRecord::Base.timestamped_migrations
  end
end

Instance Method Details

#install_setting ⇒ Object



41
42
43
44
# File 'lib/generators/settings/install_generator.rb', line 41

def install_setting
  template "model.rb", File.join("app/models", class_path, "#{file_name}.rb")
  migration_template "migration.rb", "db/migrate/create_settings.rb", migration_version: migration_version
end

#migration_version ⇒ Object



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

def migration_version
  "[#{rails_version_major}.#{rails_version_minor}]"
end

#rails_version_major ⇒ Object



46
47
48
# File 'lib/generators/settings/install_generator.rb', line 46

def rails_version_major
  Rails::VERSION::MAJOR
end

#rails_version_minor ⇒ Object



50
51
52
# File 'lib/generators/settings/install_generator.rb', line 50

def rails_version_minor
  Rails::VERSION::MINOR
end