migration_template (source, destination=nil, config={})
public
Creates a migration template at the given destination. The difference to
the default template method is that the migration version is appended to
the destination file name.
The migration version, migration file name, migration class name are
available as instance variables in the template to be rendered.
Examples
migration_template " migration.rb ", " db/migrate/add_foo_to_bar.rb "
Show source # File railties/lib/rails/generators/migration.rb, line 45
def migration_template(source, destination=nil, config={})
destination = File.expand_path(destination || source, self.destination_root)
migration_dir = File.dirname(destination)
@migration_number = self.class.next_migration_number(migration_dir)
@migration_file_name = File.basename(destination).sub(/\.rb$/, '')
@migration_class_name = @migration_file_name.camelize
destination = self.class.migration_exists?(migration_dir, @migration_file_name)
if !(destination && options[:skip]) && behavior == :invoke
if destination && options.force?
remove_file(destination)
elsif destination
raise Error, "Another migration is already named #{@migration_file_name}: #{destination}"
end
destination = File.join(migration_dir, "#{@migration_number}_#{@migration_file_name}.rb")
end
template(source, destination, config)
end