Class: TimeTravelGenerator

Inherits:
ActiveRecord::Generators::Base
  • Object
show all
Defined in:
lib/generators/time_travel/time_travel_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



8
9
10
# File 'lib/generators/time_travel/time_travel_generator.rb', line 8

def self.source_root
  @source_root ||= File.expand_path('../templates', __FILE__)
end

Instance Method Details

#generate_migrationObject



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/generators/time_travel/time_travel_generator.rb', line 12

def generate_migration
  if (behavior == :invoke && model_exists?) 
    migration_template("time_travel_migration_existing.rb.erb",
                     "db/migrate/#{migration_file_name}",
                     migration_version: migration_version)
  else
    migration_template("time_travel_migration_new.rb.erb",
                     "db/migrate/#{migration_file_name}",
                     migration_version: migration_version)
  end
end

#migration_class_nameObject



40
41
42
# File 'lib/generators/time_travel/time_travel_generator.rb', line 40

def migration_class_name
  migration_name.camelize
end

#migration_file_nameObject



36
37
38
# File 'lib/generators/time_travel/time_travel_generator.rb', line 36

def migration_file_name
  "#{migration_name}.rb"
end

#migration_nameObject



32
33
34
# File 'lib/generators/time_travel/time_travel_generator.rb', line 32

def migration_name
  "add_time_travel_to_#{name.underscore.pluralize}"
end

#migration_versionObject



44
45
46
47
48
# File 'lib/generators/time_travel/time_travel_generator.rb', line 44

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

#model_exists?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/generators/time_travel/time_travel_generator.rb', line 24

def model_exists?
  File.exist?(File.join(destination_root, model_path))
end

#model_pathObject



28
29
30
# File 'lib/generators/time_travel/time_travel_generator.rb', line 28

def model_path
  @model_path ||= File.join("app", "models", "#{file_path}.rb")
end