Class Rails::Generator::Commands::Base
In: vendor/rails/railties/lib/rails_generator/commands.rb
Parent: DelegateClass(Rails::Generator::Base)

Generator commands delegate Rails::Generator::Base and implement a standard set of actions. Their behavior is defined by the way they respond to these actions: Create brings life; Destroy brings death; List passively observes.

Commands are invoked by replaying (or rewinding) the generator‘s manifest of actions. See Rails::Generator::Manifest and Rails::Generator::Base#manifest method that generator subclasses are required to override.

Commands allows generators to "plug in" invocation behavior, which corresponds to the GoF Strategy pattern.

Methods

Public Instance methods

Does nothing for all commands except Create.

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 52
52:         def class_collisions(*class_names)
53:         end

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 45
45:         def dependency(generator_name, args, runtime_options = {})
46:           logger.dependency(generator_name) do
47:             self.class.new(instance(generator_name, args, full_options(runtime_options))).invoke!
48:           end
49:         end

Replay action manifest. RewindBase subclass rewinds manifest.

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 41
41:         def invoke!
42:           manifest.replay(self)
43:         end

Does nothing for all commands except Create.

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 56
56:         def readme(*args)
57:         end

Protected Instance methods

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 60
60:           def current_migration_number
61:             Dir.glob("#{RAILS_ROOT}/#{@migration_directory}/[0-9]*_*.rb").inject(0) do |max, file_path|
62:               n = File.basename(file_path).split('_', 2).first.to_i
63:               if n > max then n else max end
64:             end
65:           end

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 75
75:           def existing_migrations(file_name)
76:             Dir.glob("#{@migration_directory}/[0-9]*_*.rb").grep(/[0-9]+_#{file_name}.rb$/)
77:           end

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 91
91:           def gsub_file(relative_destination, regexp, *args, &block)
92:             path = destination_path(relative_destination)
93:             content = File.read(path).gsub(regexp, *args, &block)
94:             File.open(path, 'wb') { |file| file.write(content) }
95:           end

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 71
71:           def migration_directory(relative_path)
72:             directory(@migration_directory = relative_path)
73:           end

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 79
79:           def migration_exists?(file_name)
80:             not existing_migrations(file_name).empty?
81:           end

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 67
67:           def next_migration_number
68:             current_migration_number + 1
69:           end

[Source]

    # File vendor/rails/railties/lib/rails_generator/commands.rb, line 83
83:           def next_migration_string(padding = 3)
84:             if ActiveRecord::Base.timestamped_migrations
85:               Time.now.utc.strftime("%Y%m%d%H%M%S")
86:             else
87:               "%.#{padding}d" % next_migration_number
88:             end
89:           end

[Validate]