migrant 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +32 -32
- data/README.rdoc +22 -18
- data/VERSION +1 -1
- data/lib/migrant/migration_generator.rb +27 -22
- data/lib/migrant/model_extensions.rb +0 -1
- data/lib/tasks/db.rake +11 -1
- data/migrant.gemspec +24 -4
- data/test/verified_output/migrations/business_id.rb +1 -1
- data/test/verified_output/migrations/created_at.rb +2 -2
- data/test/verified_output/migrations/estimated_value_notes.rb +1 -1
- data/test/verified_output/migrations/landline.rb +1 -1
- metadata +84 -73
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
migrant (0.2.
|
4
|
+
migrant (0.2.3)
|
5
5
|
migrant
|
6
6
|
rails
|
7
7
|
|
@@ -9,34 +9,34 @@ GEM
|
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
11
|
abstract (1.0.0)
|
12
|
-
actionmailer (3.0.
|
13
|
-
actionpack (= 3.0.
|
14
|
-
mail (~> 2.2.
|
15
|
-
actionpack (3.0.
|
16
|
-
activemodel (= 3.0.
|
17
|
-
activesupport (= 3.0.
|
12
|
+
actionmailer (3.0.4)
|
13
|
+
actionpack (= 3.0.4)
|
14
|
+
mail (~> 2.2.15)
|
15
|
+
actionpack (3.0.4)
|
16
|
+
activemodel (= 3.0.4)
|
17
|
+
activesupport (= 3.0.4)
|
18
18
|
builder (~> 2.1.2)
|
19
19
|
erubis (~> 2.6.6)
|
20
20
|
i18n (~> 0.4)
|
21
21
|
rack (~> 1.2.1)
|
22
22
|
rack-mount (~> 0.6.13)
|
23
|
-
rack-test (~> 0.5.
|
23
|
+
rack-test (~> 0.5.7)
|
24
24
|
tzinfo (~> 0.3.23)
|
25
|
-
activemodel (3.0.
|
26
|
-
activesupport (= 3.0.
|
25
|
+
activemodel (3.0.4)
|
26
|
+
activesupport (= 3.0.4)
|
27
27
|
builder (~> 2.1.2)
|
28
28
|
i18n (~> 0.4)
|
29
|
-
activerecord (3.0.
|
30
|
-
activemodel (= 3.0.
|
31
|
-
activesupport (= 3.0.
|
29
|
+
activerecord (3.0.4)
|
30
|
+
activemodel (= 3.0.4)
|
31
|
+
activesupport (= 3.0.4)
|
32
32
|
arel (~> 2.0.2)
|
33
33
|
tzinfo (~> 0.3.23)
|
34
|
-
activeresource (3.0.
|
35
|
-
activemodel (= 3.0.
|
36
|
-
activesupport (= 3.0.
|
37
|
-
activesupport (3.0.
|
34
|
+
activeresource (3.0.4)
|
35
|
+
activemodel (= 3.0.4)
|
36
|
+
activesupport (= 3.0.4)
|
37
|
+
activesupport (3.0.4)
|
38
38
|
ansi (1.2.2)
|
39
|
-
arel (2.0.
|
39
|
+
arel (2.0.8)
|
40
40
|
builder (2.1.2)
|
41
41
|
erubis (2.6.6)
|
42
42
|
abstract (>= 1.0.0)
|
@@ -46,7 +46,7 @@ GEM
|
|
46
46
|
bundler (~> 1.0.0)
|
47
47
|
git (>= 1.2.5)
|
48
48
|
rake
|
49
|
-
mail (2.2.
|
49
|
+
mail (2.2.15)
|
50
50
|
activesupport (>= 2.3.6)
|
51
51
|
i18n (>= 0.4.0)
|
52
52
|
mime-types (~> 1.16)
|
@@ -58,23 +58,23 @@ GEM
|
|
58
58
|
rack (>= 1.0.0)
|
59
59
|
rack-test (0.5.7)
|
60
60
|
rack (>= 1.0)
|
61
|
-
rails (3.0.
|
62
|
-
actionmailer (= 3.0.
|
63
|
-
actionpack (= 3.0.
|
64
|
-
activerecord (= 3.0.
|
65
|
-
activeresource (= 3.0.
|
66
|
-
activesupport (= 3.0.
|
61
|
+
rails (3.0.4)
|
62
|
+
actionmailer (= 3.0.4)
|
63
|
+
actionpack (= 3.0.4)
|
64
|
+
activerecord (= 3.0.4)
|
65
|
+
activeresource (= 3.0.4)
|
66
|
+
activesupport (= 3.0.4)
|
67
67
|
bundler (~> 1.0)
|
68
|
-
railties (= 3.0.
|
69
|
-
railties (3.0.
|
70
|
-
actionpack (= 3.0.
|
71
|
-
activesupport (= 3.0.
|
68
|
+
railties (= 3.0.4)
|
69
|
+
railties (3.0.4)
|
70
|
+
actionpack (= 3.0.4)
|
71
|
+
activesupport (= 3.0.4)
|
72
72
|
rake (>= 0.8.7)
|
73
73
|
thor (~> 0.14.4)
|
74
74
|
rake (0.8.7)
|
75
|
-
simplecov (0.
|
76
|
-
simplecov-html (
|
77
|
-
simplecov-html (0.3
|
75
|
+
simplecov (0.4.0)
|
76
|
+
simplecov-html (~> 0.4.0)
|
77
|
+
simplecov-html (0.4.3)
|
78
78
|
sqlite3 (1.3.3)
|
79
79
|
sqlite3-ruby (1.3.3)
|
80
80
|
sqlite3 (>= 1.3.3)
|
data/README.rdoc
CHANGED
@@ -10,14 +10,14 @@ You'll also get a handy .mock method to instantiate a filled in model for testin
|
|
10
10
|
== Getting Started
|
11
11
|
|
12
12
|
Only for Rails 3 and Ruby 1.9+ folks. Simply install the gem "migrant", or add it to your bundler Gemfile
|
13
|
-
|
13
|
+
|
14
14
|
== Jumping right in
|
15
15
|
|
16
16
|
Start by creating some models with the structure you need:
|
17
17
|
|
18
18
|
class Business < ActiveRecord::Base
|
19
19
|
belongs_to :user
|
20
|
-
|
20
|
+
|
21
21
|
# Here's where you describe the columns in your model
|
22
22
|
structure do
|
23
23
|
name "The kernel's favourite fried chickens"
|
@@ -27,12 +27,12 @@ Start by creating some models with the structure you need:
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
The best and easiest way is to provide example data and then Migrant will work out the appropriate
|
30
|
+
The best and easiest way is to provide example data and then Migrant will work out the appropriate
|
31
31
|
column type for you. Another example covering some more bases:
|
32
32
|
|
33
33
|
class User < ActiveRecord::Base
|
34
34
|
has_many :businesses
|
35
|
-
|
35
|
+
|
36
36
|
structure do
|
37
37
|
name # Don't specify any structure to get good 'ol varchar(255)
|
38
38
|
surname "Smith", :validates => :presence # You can add your validations in here too to keep DRY
|
@@ -40,30 +40,35 @@ column type for you. Another example covering some more bases:
|
|
40
40
|
timestamps # Gets you a created_at, and updated_at
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
Now, to get your database up to date simply run:
|
45
45
|
|
46
46
|
> rake db:upgrade
|
47
47
|
|
48
|
-
Wrote db/migrate/20101028192913_create_businesses.rb...
|
48
|
+
Wrote db/migrate/20101028192913_create_businesses.rb...
|
49
49
|
Wrote db/migrate/20101028192916_create_users.rb...
|
50
|
-
|
50
|
+
|
51
51
|
OR, if you'd prefer to look over the migrations yourself first, run:
|
52
52
|
|
53
53
|
> rails generate migrations
|
54
|
-
|
54
|
+
|
55
55
|
Result:
|
56
56
|
|
57
|
-
irb(main):001:0> Business
|
58
|
-
=> Business(id: integer, user_id: integer, name: string, website: string, address: text, date_established: datetime)
|
59
|
-
|
60
|
-
irb(main):002:0> Awesome!!!!
|
57
|
+
irb(main):001:0> Business
|
58
|
+
=> Business(id: integer, user_id: integer, name: string, website: string, address: text, date_established: datetime)
|
59
|
+
|
60
|
+
irb(main):002:0> Awesome!!!!
|
61
61
|
NoMethodError: undefined method `Awesome!!!!' for main:Object
|
62
|
-
|
62
|
+
|
63
|
+
By default, your database structure will be cloned to your test environment. If you don't want this to happen
|
64
|
+
automatically, simply specify an environment variable directly:
|
65
|
+
|
66
|
+
> rake db:upgrade RAILS_ENV=development
|
67
|
+
|
63
68
|
== Want more examples?
|
64
69
|
|
65
70
|
Check out the test models in test/rails_app/app/models/*
|
66
|
-
|
71
|
+
|
67
72
|
== What will happen seamlessly
|
68
73
|
|
69
74
|
* Creating tables or adding columns (as appropriate)
|
@@ -75,7 +80,7 @@ Check out the test models in test/rails_app/app/models/*
|
|
75
80
|
|
76
81
|
These actions won't be performed (because we don't want to hurt your data):
|
77
82
|
|
78
|
-
* Remove tables/columns
|
83
|
+
* Remove tables/columns
|
79
84
|
* Changing column types where data loss may occur (e.g. varchar -> int)
|
80
85
|
|
81
86
|
== Getting a mock of your model
|
@@ -83,9 +88,9 @@ These actions won't be performed (because we don't want to hurt your data):
|
|
83
88
|
> rails console
|
84
89
|
|
85
90
|
irb(main):002:0> my_business = Business.mock
|
86
|
-
=> #<Business id: nil, name: "The Kernel's favourite fried chickens", website: "http://www.google.co.za/",
|
91
|
+
=> #<Business id: nil, name: "The Kernel's favourite fried chickens", website: "http://www.google.co.za/",
|
87
92
|
address: "11 Test Drive\nGardens\nCape Town\nSouth Africa", date_established: "1710-10-28 21:03:31">
|
88
|
-
|
93
|
+
|
89
94
|
irb(main):003:0> my_business.user
|
90
95
|
=> #<User id: nil, name: "John", surname: "Smith", description: "Some string">
|
91
96
|
|
@@ -131,4 +136,3 @@ Please be sure to install all the development dependencies from the gemspec, the
|
|
131
136
|
|
132
137
|
Simplecov reports will be generated for each run, if it's not at 100% line coverage, something's wrong!
|
133
138
|
|
134
|
-
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
@@ -9,7 +9,7 @@ module Migrant
|
|
9
9
|
puts "You have some pending database migrations. You can either:\n1. Run them with rake db:migrate\n2. Delete them, in which case this task will probably recreate their actions (DON'T do this if they've been in SCM)."
|
10
10
|
return false
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
# Get all tables and compare to the desired schema
|
14
14
|
# The next line is an evil hack to recursively load all model files in app/models
|
15
15
|
# This needs to be done because Rails normally lazy-loads these files, resulting a blank descendants list of AR::Base
|
@@ -19,12 +19,12 @@ module Migrant
|
|
19
19
|
next if model.schema.nil? || !model.schema.requires_migration? # Skips inherited schemas (such as models with STI)
|
20
20
|
model.reset_column_information # db:migrate doesn't do this
|
21
21
|
model_schema = model.schema.column_migrations
|
22
|
-
|
22
|
+
|
23
23
|
if model.table_exists?
|
24
24
|
# Structure ActiveRecord::Base's column information so we can compare it directly to the schema
|
25
25
|
db_schema = Hash[*model.columns.collect {|c| [c.name.to_sym, Hash[*[:type, :limit].map { |type| [type, c.send(type)] }.flatten] ] }.flatten]
|
26
|
-
changes = model.schema.columns.collect do |name, data_type|
|
27
|
-
begin
|
26
|
+
changes = model.schema.columns.collect do |name, data_type|
|
27
|
+
begin
|
28
28
|
[name, data_type.structure_changes_from(db_schema[name])]
|
29
29
|
rescue DataType::DangerousMigration
|
30
30
|
puts "Cannot generate migration automatically for #{model.table_name}, this would involve possible data loss on column: #{name}\nOld structure: #{db_schema[name].inspect}. New structure: #{data_type.column.inspect}\nPlease create and run this migration yourself (with the appropriate data integrity checks)"
|
@@ -32,29 +32,33 @@ module Migrant
|
|
32
32
|
end
|
33
33
|
end.reject { |change| change[1].nil? }
|
34
34
|
next if changes.blank?
|
35
|
-
|
36
|
-
|
35
|
+
changed_fields, added_fields = [], []
|
36
|
+
|
37
37
|
up_code = changes.collect do |field, options|
|
38
|
-
type = options.delete(:type)
|
39
|
-
arguments = (options.blank?)? "" : ", #{options.inspect[1..-2]}"
|
40
|
-
|
38
|
+
type = options.delete(:type)
|
39
|
+
arguments = (options.blank?)? "" : ", #{options.inspect[1..-2]}"
|
40
|
+
|
41
41
|
if db_schema[field]
|
42
|
+
changed_fields << field
|
42
43
|
"change_column :#{model.table_name}, :#{field}, :#{type}#{arguments}"
|
43
44
|
else
|
45
|
+
added_fields << field
|
44
46
|
"add_column :#{model.table_name}, :#{field}, :#{type}#{arguments}"
|
45
47
|
end
|
46
48
|
end.join(NEWLINE+TABS)
|
47
|
-
|
49
|
+
|
50
|
+
activity = 'changed_'+model.table_name+[(added_fields.blank?)? nil : '_added_'+added_fields.join('_'), (changed_fields.blank?)? nil : '_modified_'+changed_fields.join('_')].compact.join('_and_')
|
51
|
+
|
48
52
|
down_code = changes.collect do |field, options|
|
49
53
|
if db_schema[field]
|
50
|
-
type = db_schema[field].delete(:type)
|
51
|
-
arguments = (db_schema[field].blank?)? "" : ", #{db_schema[field].inspect[1..-2]}"
|
54
|
+
type = db_schema[field].delete(:type)
|
55
|
+
arguments = (db_schema[field].blank?)? "" : ", #{db_schema[field].inspect[1..-2]}"
|
52
56
|
"change_column :#{model.table_name}, :#{field}, :#{type}#{arguments}"
|
53
57
|
else
|
54
58
|
"remove_column :#{model.table_name}, :#{field}"
|
55
59
|
end
|
56
|
-
end.join(NEWLINE+TABS)
|
57
|
-
|
60
|
+
end.join(NEWLINE+TABS)
|
61
|
+
|
58
62
|
# For adapters that can report indexes, add as necessary
|
59
63
|
if ActiveRecord::Base.connection.respond_to?(:indexes)
|
60
64
|
current_indexes = ActiveRecord::Base.connection.indexes(model.table_name).collect { |index| (index.columns.length == 1)? index.columns.first.to_sym : index.columns.collect(&:to_sym) }
|
@@ -65,16 +69,16 @@ module Migrant
|
|
65
69
|
end.compact.join
|
66
70
|
end
|
67
71
|
else
|
68
|
-
activity = "create_#{model.table_name}"
|
69
|
-
up_code = "create_table :#{model.table_name} do |t|"+NEWLINE+model_schema.collect do |field, options|
|
72
|
+
activity = "create_#{model.table_name}"
|
73
|
+
up_code = "create_table :#{model.table_name} do |t|"+NEWLINE+model_schema.collect do |field, options|
|
70
74
|
type = options.delete(:type)
|
71
75
|
options.delete(:was) # Aliases not relevant when creating a new table
|
72
76
|
arguments = (options.blank?)? "" : ", #{options.inspect[1..-2]}"
|
73
77
|
(TABS*2)+"t.#{type} :#{field}#{arguments}"
|
74
78
|
end.join(NEWLINE)+NEWLINE+TABS+"end"
|
75
|
-
|
79
|
+
|
76
80
|
down_code = "drop_table :#{model.table_name}"
|
77
|
-
up_code += NEWLINE+TABS+model.schema.indexes.collect { |fields| "add_index :#{model.table_name}, #{fields.inspect}"}.join(NEWLINE+TABS)
|
81
|
+
up_code += NEWLINE+TABS+model.schema.indexes.collect { |fields| "add_index :#{model.table_name}, #{fields.inspect}"}.join(NEWLINE+TABS)
|
78
82
|
end
|
79
83
|
|
80
84
|
# Indexes
|
@@ -85,12 +89,12 @@ module Migrant
|
|
85
89
|
end
|
86
90
|
true
|
87
91
|
end
|
88
|
-
|
92
|
+
|
89
93
|
private
|
90
94
|
def migrations_path
|
91
95
|
Rails.root.join(ActiveRecord::Migrator.migrations_path)
|
92
96
|
end
|
93
|
-
|
97
|
+
|
94
98
|
# See ActiveRecord::Generators::Migration
|
95
99
|
# Only generating a migration to each second is a problem.. because we generate everything in the same second
|
96
100
|
# So we have to add further "pretend" seconds. This WILL cause problems.
|
@@ -99,7 +103,7 @@ module Migrant
|
|
99
103
|
highest = Dir.glob(migrations_path.to_s+"/[0-9]*_*.rb").collect do |file|
|
100
104
|
File.basename(file).split("_").first.to_i
|
101
105
|
end.max
|
102
|
-
|
106
|
+
|
103
107
|
if ActiveRecord::Base.timestamped_migrations
|
104
108
|
base = Time.now.utc.strftime("%Y%m%d%H%M%S").to_s
|
105
109
|
(highest.to_i >= base.to_i)? (highest + 1).to_s : base
|
@@ -107,7 +111,7 @@ module Migrant
|
|
107
111
|
(highest.to_i + 1).to_s
|
108
112
|
end
|
109
113
|
end
|
110
|
-
|
114
|
+
|
111
115
|
def migration_template(activity, up_code, down_code)
|
112
116
|
"class #{activity.camelize.gsub(/\s/, '')} < ActiveRecord::Migration
|
113
117
|
def self.up
|
@@ -121,3 +125,4 @@ end"
|
|
121
125
|
end
|
122
126
|
end
|
123
127
|
end
|
128
|
+
|
data/lib/tasks/db.rake
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
namespace :db do
|
2
2
|
desc "Generates migrations as per structure design in your models and runs them"
|
3
3
|
task :upgrade => :environment do
|
4
|
-
|
4
|
+
if Migrant::MigrationGenerator.new.run
|
5
|
+
puts "\nInvoking db:migrate for #{Rails.env} environment."
|
6
|
+
Rake::Task['db:migrate'].invoke
|
7
|
+
|
8
|
+
# If RAILS_ENV is explicitly specified, don't clone out to test
|
9
|
+
unless ENV['RAILS_ENV']
|
10
|
+
puts "Migrated. Now, cloning out to the test database."
|
11
|
+
Rake::Task['db:test:clone'].invoke
|
12
|
+
end
|
13
|
+
end
|
5
14
|
end
|
6
15
|
end
|
16
|
+
|
data/migrant.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{migrant}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Pascal Houliston"]
|
12
|
-
s.date = %q{2011-02-
|
12
|
+
s.date = %q{2011-02-15}
|
13
13
|
s.description = %q{Migrant gives you a super-clean DSL to describe your ActiveRecord models (somewhat similar to DataMapper) and generates all your migrations for you so you can spend more time coding the stuff that counts!}
|
14
14
|
s.email = %q{101pascal@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -95,7 +95,7 @@ Gem::Specification.new do |s|
|
|
95
95
|
]
|
96
96
|
s.homepage = %q{http://github.com/pascalh1011/migrant}
|
97
97
|
s.require_paths = ["lib"]
|
98
|
-
s.rubygems_version = %q{1.
|
98
|
+
s.rubygems_version = %q{1.5.2}
|
99
99
|
s.summary = %q{All the fun of ActiveRecord, without writing your migrations, and a dash of mocking.}
|
100
100
|
s.test_files = [
|
101
101
|
"test/additional_models/review.rb",
|
@@ -137,7 +137,6 @@ Gem::Specification.new do |s|
|
|
137
137
|
]
|
138
138
|
|
139
139
|
if s.respond_to? :specification_version then
|
140
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
141
140
|
s.specification_version = 3
|
142
141
|
|
143
142
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
@@ -170,6 +169,13 @@ Gem::Specification.new do |s|
|
|
170
169
|
s.add_development_dependency(%q<turn>, [">= 0"])
|
171
170
|
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
172
171
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
172
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
173
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
174
|
+
s.add_development_dependency(%q<ansi>, [">= 0"])
|
175
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
176
|
+
s.add_development_dependency(%q<turn>, [">= 0"])
|
177
|
+
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
178
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
173
179
|
s.add_runtime_dependency(%q<rails>, [">= 0"])
|
174
180
|
else
|
175
181
|
s.add_dependency(%q<migrant>, [">= 0"])
|
@@ -201,6 +207,13 @@ Gem::Specification.new do |s|
|
|
201
207
|
s.add_dependency(%q<turn>, [">= 0"])
|
202
208
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
203
209
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
210
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
211
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
212
|
+
s.add_dependency(%q<ansi>, [">= 0"])
|
213
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
214
|
+
s.add_dependency(%q<turn>, [">= 0"])
|
215
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
216
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
204
217
|
s.add_dependency(%q<rails>, [">= 0"])
|
205
218
|
end
|
206
219
|
else
|
@@ -233,6 +246,13 @@ Gem::Specification.new do |s|
|
|
233
246
|
s.add_dependency(%q<turn>, [">= 0"])
|
234
247
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
235
248
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
249
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
250
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
251
|
+
s.add_dependency(%q<ansi>, [">= 0"])
|
252
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
253
|
+
s.add_dependency(%q<turn>, [">= 0"])
|
254
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
255
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
236
256
|
s.add_dependency(%q<rails>, [">= 0"])
|
237
257
|
end
|
238
258
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class
|
1
|
+
class ChangedBusinessesAddedUpdatedAtCreatedAt < ActiveRecord::Migration
|
2
2
|
def self.up
|
3
3
|
add_column :businesses, :updated_at, :datetime
|
4
4
|
add_column :businesses, :created_at, :datetime
|
@@ -8,4 +8,4 @@ class BusinessesModifyFieldsUpdatedAtCreatedAt < ActiveRecord::Migration
|
|
8
8
|
remove_column :businesses, :updated_at
|
9
9
|
remove_column :businesses, :created_at
|
10
10
|
end
|
11
|
-
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: migrant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 2
|
8
|
-
- 3
|
9
|
-
version: 0.2.3
|
4
|
+
prerelease:
|
5
|
+
version: 0.2.4
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Pascal Houliston
|
@@ -14,7 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-15 00:00:00 +00:00
|
18
14
|
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
@@ -24,8 +20,6 @@ dependencies:
|
|
24
20
|
requirements:
|
25
21
|
- - ">="
|
26
22
|
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 0
|
29
23
|
version: "0"
|
30
24
|
type: :runtime
|
31
25
|
prerelease: false
|
@@ -37,8 +31,6 @@ dependencies:
|
|
37
31
|
requirements:
|
38
32
|
- - ">="
|
39
33
|
- !ruby/object:Gem::Version
|
40
|
-
segments:
|
41
|
-
- 0
|
42
34
|
version: "0"
|
43
35
|
type: :development
|
44
36
|
prerelease: false
|
@@ -50,8 +42,6 @@ dependencies:
|
|
50
42
|
requirements:
|
51
43
|
- - ">="
|
52
44
|
- !ruby/object:Gem::Version
|
53
|
-
segments:
|
54
|
-
- 0
|
55
45
|
version: "0"
|
56
46
|
type: :development
|
57
47
|
prerelease: false
|
@@ -63,8 +53,6 @@ dependencies:
|
|
63
53
|
requirements:
|
64
54
|
- - ">="
|
65
55
|
- !ruby/object:Gem::Version
|
66
|
-
segments:
|
67
|
-
- 0
|
68
56
|
version: "0"
|
69
57
|
type: :development
|
70
58
|
prerelease: false
|
@@ -76,8 +64,6 @@ dependencies:
|
|
76
64
|
requirements:
|
77
65
|
- - ">="
|
78
66
|
- !ruby/object:Gem::Version
|
79
|
-
segments:
|
80
|
-
- 0
|
81
67
|
version: "0"
|
82
68
|
type: :development
|
83
69
|
prerelease: false
|
@@ -89,8 +75,6 @@ dependencies:
|
|
89
75
|
requirements:
|
90
76
|
- - ">="
|
91
77
|
- !ruby/object:Gem::Version
|
92
|
-
segments:
|
93
|
-
- 0
|
94
78
|
version: "0"
|
95
79
|
type: :development
|
96
80
|
prerelease: false
|
@@ -102,8 +86,6 @@ dependencies:
|
|
102
86
|
requirements:
|
103
87
|
- - ">="
|
104
88
|
- !ruby/object:Gem::Version
|
105
|
-
segments:
|
106
|
-
- 0
|
107
89
|
version: "0"
|
108
90
|
type: :development
|
109
91
|
prerelease: false
|
@@ -115,8 +97,6 @@ dependencies:
|
|
115
97
|
requirements:
|
116
98
|
- - ">="
|
117
99
|
- !ruby/object:Gem::Version
|
118
|
-
segments:
|
119
|
-
- 0
|
120
100
|
version: "0"
|
121
101
|
type: :development
|
122
102
|
prerelease: false
|
@@ -128,8 +108,6 @@ dependencies:
|
|
128
108
|
requirements:
|
129
109
|
- - ">="
|
130
110
|
- !ruby/object:Gem::Version
|
131
|
-
segments:
|
132
|
-
- 0
|
133
111
|
version: "0"
|
134
112
|
type: :development
|
135
113
|
prerelease: false
|
@@ -141,8 +119,6 @@ dependencies:
|
|
141
119
|
requirements:
|
142
120
|
- - ">="
|
143
121
|
- !ruby/object:Gem::Version
|
144
|
-
segments:
|
145
|
-
- 0
|
146
122
|
version: "0"
|
147
123
|
type: :development
|
148
124
|
prerelease: false
|
@@ -154,8 +130,6 @@ dependencies:
|
|
154
130
|
requirements:
|
155
131
|
- - ">="
|
156
132
|
- !ruby/object:Gem::Version
|
157
|
-
segments:
|
158
|
-
- 0
|
159
133
|
version: "0"
|
160
134
|
type: :development
|
161
135
|
prerelease: false
|
@@ -167,8 +141,6 @@ dependencies:
|
|
167
141
|
requirements:
|
168
142
|
- - ">="
|
169
143
|
- !ruby/object:Gem::Version
|
170
|
-
segments:
|
171
|
-
- 0
|
172
144
|
version: "0"
|
173
145
|
type: :development
|
174
146
|
prerelease: false
|
@@ -180,8 +152,6 @@ dependencies:
|
|
180
152
|
requirements:
|
181
153
|
- - ">="
|
182
154
|
- !ruby/object:Gem::Version
|
183
|
-
segments:
|
184
|
-
- 0
|
185
155
|
version: "0"
|
186
156
|
type: :development
|
187
157
|
prerelease: false
|
@@ -193,8 +163,6 @@ dependencies:
|
|
193
163
|
requirements:
|
194
164
|
- - ">="
|
195
165
|
- !ruby/object:Gem::Version
|
196
|
-
segments:
|
197
|
-
- 0
|
198
166
|
version: "0"
|
199
167
|
type: :development
|
200
168
|
prerelease: false
|
@@ -206,8 +174,6 @@ dependencies:
|
|
206
174
|
requirements:
|
207
175
|
- - ">="
|
208
176
|
- !ruby/object:Gem::Version
|
209
|
-
segments:
|
210
|
-
- 0
|
211
177
|
version: "0"
|
212
178
|
type: :development
|
213
179
|
prerelease: false
|
@@ -219,8 +185,6 @@ dependencies:
|
|
219
185
|
requirements:
|
220
186
|
- - ">="
|
221
187
|
- !ruby/object:Gem::Version
|
222
|
-
segments:
|
223
|
-
- 0
|
224
188
|
version: "0"
|
225
189
|
type: :development
|
226
190
|
prerelease: false
|
@@ -232,8 +196,6 @@ dependencies:
|
|
232
196
|
requirements:
|
233
197
|
- - ">="
|
234
198
|
- !ruby/object:Gem::Version
|
235
|
-
segments:
|
236
|
-
- 0
|
237
199
|
version: "0"
|
238
200
|
type: :development
|
239
201
|
prerelease: false
|
@@ -245,8 +207,6 @@ dependencies:
|
|
245
207
|
requirements:
|
246
208
|
- - ">="
|
247
209
|
- !ruby/object:Gem::Version
|
248
|
-
segments:
|
249
|
-
- 0
|
250
210
|
version: "0"
|
251
211
|
type: :development
|
252
212
|
prerelease: false
|
@@ -258,8 +218,6 @@ dependencies:
|
|
258
218
|
requirements:
|
259
219
|
- - ">="
|
260
220
|
- !ruby/object:Gem::Version
|
261
|
-
segments:
|
262
|
-
- 0
|
263
221
|
version: "0"
|
264
222
|
type: :development
|
265
223
|
prerelease: false
|
@@ -271,8 +229,6 @@ dependencies:
|
|
271
229
|
requirements:
|
272
230
|
- - ">="
|
273
231
|
- !ruby/object:Gem::Version
|
274
|
-
segments:
|
275
|
-
- 0
|
276
232
|
version: "0"
|
277
233
|
type: :development
|
278
234
|
prerelease: false
|
@@ -284,8 +240,6 @@ dependencies:
|
|
284
240
|
requirements:
|
285
241
|
- - ">="
|
286
242
|
- !ruby/object:Gem::Version
|
287
|
-
segments:
|
288
|
-
- 0
|
289
243
|
version: "0"
|
290
244
|
type: :development
|
291
245
|
prerelease: false
|
@@ -297,8 +251,6 @@ dependencies:
|
|
297
251
|
requirements:
|
298
252
|
- - ">="
|
299
253
|
- !ruby/object:Gem::Version
|
300
|
-
segments:
|
301
|
-
- 0
|
302
254
|
version: "0"
|
303
255
|
type: :development
|
304
256
|
prerelease: false
|
@@ -310,8 +262,6 @@ dependencies:
|
|
310
262
|
requirements:
|
311
263
|
- - ">="
|
312
264
|
- !ruby/object:Gem::Version
|
313
|
-
segments:
|
314
|
-
- 0
|
315
265
|
version: "0"
|
316
266
|
type: :development
|
317
267
|
prerelease: false
|
@@ -323,8 +273,6 @@ dependencies:
|
|
323
273
|
requirements:
|
324
274
|
- - ">="
|
325
275
|
- !ruby/object:Gem::Version
|
326
|
-
segments:
|
327
|
-
- 0
|
328
276
|
version: "0"
|
329
277
|
type: :development
|
330
278
|
prerelease: false
|
@@ -336,8 +284,6 @@ dependencies:
|
|
336
284
|
requirements:
|
337
285
|
- - ">="
|
338
286
|
- !ruby/object:Gem::Version
|
339
|
-
segments:
|
340
|
-
- 0
|
341
287
|
version: "0"
|
342
288
|
type: :development
|
343
289
|
prerelease: false
|
@@ -349,8 +295,6 @@ dependencies:
|
|
349
295
|
requirements:
|
350
296
|
- - ">="
|
351
297
|
- !ruby/object:Gem::Version
|
352
|
-
segments:
|
353
|
-
- 0
|
354
298
|
version: "0"
|
355
299
|
type: :development
|
356
300
|
prerelease: false
|
@@ -362,8 +306,6 @@ dependencies:
|
|
362
306
|
requirements:
|
363
307
|
- - ">="
|
364
308
|
- !ruby/object:Gem::Version
|
365
|
-
segments:
|
366
|
-
- 0
|
367
309
|
version: "0"
|
368
310
|
type: :development
|
369
311
|
prerelease: false
|
@@ -375,8 +317,6 @@ dependencies:
|
|
375
317
|
requirements:
|
376
318
|
- - ">="
|
377
319
|
- !ruby/object:Gem::Version
|
378
|
-
segments:
|
379
|
-
- 0
|
380
320
|
version: "0"
|
381
321
|
type: :development
|
382
322
|
prerelease: false
|
@@ -388,25 +328,98 @@ dependencies:
|
|
388
328
|
requirements:
|
389
329
|
- - ">="
|
390
330
|
- !ruby/object:Gem::Version
|
391
|
-
segments:
|
392
|
-
- 0
|
393
331
|
version: "0"
|
394
332
|
type: :development
|
395
333
|
prerelease: false
|
396
334
|
version_requirements: *id029
|
397
335
|
- !ruby/object:Gem::Dependency
|
398
|
-
name:
|
336
|
+
name: bundler
|
399
337
|
requirement: &id030 !ruby/object:Gem::Requirement
|
400
338
|
none: false
|
401
339
|
requirements:
|
402
340
|
- - ">="
|
403
341
|
- !ruby/object:Gem::Version
|
404
|
-
segments:
|
405
|
-
- 0
|
406
342
|
version: "0"
|
407
|
-
type: :
|
343
|
+
type: :development
|
408
344
|
prerelease: false
|
409
345
|
version_requirements: *id030
|
346
|
+
- !ruby/object:Gem::Dependency
|
347
|
+
name: thoughtbot-shoulda
|
348
|
+
requirement: &id031 !ruby/object:Gem::Requirement
|
349
|
+
none: false
|
350
|
+
requirements:
|
351
|
+
- - ">="
|
352
|
+
- !ruby/object:Gem::Version
|
353
|
+
version: "0"
|
354
|
+
type: :development
|
355
|
+
prerelease: false
|
356
|
+
version_requirements: *id031
|
357
|
+
- !ruby/object:Gem::Dependency
|
358
|
+
name: ansi
|
359
|
+
requirement: &id032 !ruby/object:Gem::Requirement
|
360
|
+
none: false
|
361
|
+
requirements:
|
362
|
+
- - ">="
|
363
|
+
- !ruby/object:Gem::Version
|
364
|
+
version: "0"
|
365
|
+
type: :development
|
366
|
+
prerelease: false
|
367
|
+
version_requirements: *id032
|
368
|
+
- !ruby/object:Gem::Dependency
|
369
|
+
name: jeweler
|
370
|
+
requirement: &id033 !ruby/object:Gem::Requirement
|
371
|
+
none: false
|
372
|
+
requirements:
|
373
|
+
- - ">="
|
374
|
+
- !ruby/object:Gem::Version
|
375
|
+
version: "0"
|
376
|
+
type: :development
|
377
|
+
prerelease: false
|
378
|
+
version_requirements: *id033
|
379
|
+
- !ruby/object:Gem::Dependency
|
380
|
+
name: turn
|
381
|
+
requirement: &id034 !ruby/object:Gem::Requirement
|
382
|
+
none: false
|
383
|
+
requirements:
|
384
|
+
- - ">="
|
385
|
+
- !ruby/object:Gem::Version
|
386
|
+
version: "0"
|
387
|
+
type: :development
|
388
|
+
prerelease: false
|
389
|
+
version_requirements: *id034
|
390
|
+
- !ruby/object:Gem::Dependency
|
391
|
+
name: sqlite3-ruby
|
392
|
+
requirement: &id035 !ruby/object:Gem::Requirement
|
393
|
+
none: false
|
394
|
+
requirements:
|
395
|
+
- - ">="
|
396
|
+
- !ruby/object:Gem::Version
|
397
|
+
version: "0"
|
398
|
+
type: :development
|
399
|
+
prerelease: false
|
400
|
+
version_requirements: *id035
|
401
|
+
- !ruby/object:Gem::Dependency
|
402
|
+
name: simplecov
|
403
|
+
requirement: &id036 !ruby/object:Gem::Requirement
|
404
|
+
none: false
|
405
|
+
requirements:
|
406
|
+
- - ">="
|
407
|
+
- !ruby/object:Gem::Version
|
408
|
+
version: "0"
|
409
|
+
type: :development
|
410
|
+
prerelease: false
|
411
|
+
version_requirements: *id036
|
412
|
+
- !ruby/object:Gem::Dependency
|
413
|
+
name: rails
|
414
|
+
requirement: &id037 !ruby/object:Gem::Requirement
|
415
|
+
none: false
|
416
|
+
requirements:
|
417
|
+
- - ">="
|
418
|
+
- !ruby/object:Gem::Version
|
419
|
+
version: "0"
|
420
|
+
type: :runtime
|
421
|
+
prerelease: false
|
422
|
+
version_requirements: *id037
|
410
423
|
description: Migrant gives you a super-clean DSL to describe your ActiveRecord models (somewhat similar to DataMapper) and generates all your migrations for you so you can spend more time coding the stuff that counts!
|
411
424
|
email: 101pascal@gmail.com
|
412
425
|
executables: []
|
@@ -506,7 +519,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
506
519
|
requirements:
|
507
520
|
- - ">="
|
508
521
|
- !ruby/object:Gem::Version
|
509
|
-
hash:
|
522
|
+
hash: 645598675
|
510
523
|
segments:
|
511
524
|
- 0
|
512
525
|
version: "0"
|
@@ -515,13 +528,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
515
528
|
requirements:
|
516
529
|
- - ">="
|
517
530
|
- !ruby/object:Gem::Version
|
518
|
-
segments:
|
519
|
-
- 0
|
520
531
|
version: "0"
|
521
532
|
requirements: []
|
522
533
|
|
523
534
|
rubyforge_project:
|
524
|
-
rubygems_version: 1.
|
535
|
+
rubygems_version: 1.5.2
|
525
536
|
signing_key:
|
526
537
|
specification_version: 3
|
527
538
|
summary: All the fun of ActiveRecord, without writing your migrations, and a dash of mocking.
|