51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# File 'lib/generators/declare_schema/migration/migration_generator.rb', line 51
def migrate
return if migrations_pending?
generator = Generators::DeclareSchema::Migration::Migrator.new(->(c, d, k, p) { (c, d, k, p) })
up, down = generator.generate
if up.blank?
say "Database and models match -- nothing to change"
return
end
say "\n---------- Up Migration ----------"
say up
say "----------------------------------"
say "\n---------- Down Migration --------"
say down
say "----------------------------------"
action = options[:generate] && 'g' ||
options[:migrate] && 'm' ||
choose("\nWhat now: [g]enerate migration, generate and [m]igrate now or [c]ancel?", /^(g|m|c)$/)
if action != 'c'
if name.blank? && !options[:default_name]
final_migration_name = choose("\nMigration filename: [<enter>=#{migration_name}|<custom_name>]:", /^[a-z0-9_ ]*$/, migration_name).strip.gsub(' ', '_')
end
final_migration_name = migration_name if final_migration_name.blank?
up.gsub!("\n", "\n ")
up.gsub!(/ +\n/, "\n")
down.gsub!("\n", "\n ")
down.gsub!(/ +\n/, "\n")
@up = up
@down = down
@migration_class_name = final_migration_name.camelize
migration_template('migration.rb.erb', "db/migrate/#{final_migration_name.underscore}.rb")
if action == 'm'
case Rails::VERSION::MAJOR
when 4
rake('db:migrate')
else
rails_command('db:migrate')
end
end
end
rescue ::DeclareSchema::Model::FieldSpec::UnknownSqlTypeError => ex
say "Invalid field type: #{ex}"
end
|