exodus 1.0.6 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 200e6321b65c9da53640570039104a3431d9b01c
4
+ data.tar.gz: 3bfc62dbf17cb4e149fb0e05099f6cf90cbd7f40
5
+ SHA512:
6
+ metadata.gz: 93a228768b22948e1aa9d0901aafe751d855f807af5c136fc5e198277412e6b7172acd48a009fd066317e4f3a209e08330d26195dd9d19a1b6fbcf56d34dbff2
7
+ data.tar.gz: 7312deffd0e3ab6347ea390ab0d8374f3be0365eda5043450ea152be159b5d9c9818b01161f43c18857f851d6114a1855a0159d15ef83d5b4a4e60203304b513
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ spec/reports
17
17
  test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
+ TODO.md
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## v1.1.0
2
+
3
+ * Changed the way migration are executed
4
+ * Cleaner output
5
+ * Ability to see which migration will be executed before rake db:migrate and db:rollback with rake db:migrate:show and db:rollback:show
6
+ * Fixed a text formatter issue
7
+
1
8
  ## v1.0.6
2
9
 
3
10
  * Text formatter bug fix
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
- Exodus - a migration framework for MongoDb
1
+ Exodus - A migration framework for MongoDb
2
2
  =============
3
3
 
4
- # A migration Framework for a schemaless database?
4
+ ## A migration Framework for a schemaless database?
5
5
 
6
6
  After working with Mongo for long time now I can tell you working with a schemaless database does not mean you will never need any migrations. Within the same collection Mongo allows to have documents with a complete different structure, however in some case is you might want to keep data consistency; Especially when your code is live in production and used by millions of users.
7
7
 
@@ -11,8 +11,9 @@ Exodus - a migration framework for MongoDb
11
11
  * It's Auto runnable on deploy
12
12
  * When switching enviromment (dev, pre-prod, prod) you don't need to worry if the script has been ran or not. The framework takes care of it for you
13
13
 
14
+ Exodus has been used in production since March 2013.
14
15
 
15
- # Installation
16
+ ## Installation
16
17
 
17
18
  Add this line to your application's Gemfile:
18
19
 
@@ -26,7 +27,7 @@ Exodus - a migration framework for MongoDb
26
27
 
27
28
  $ gem install exodus
28
29
 
29
- # Configuration
30
+ ## Configuration
30
31
 
31
32
  You need to configure 4 things before using Exodus: the database name, the mongodb connection, the config file location and the path to the directory that will include your migrations:
32
33
 
@@ -46,7 +47,7 @@ Exodus - a migration framework for MongoDb
46
47
  ... And you're all set!
47
48
 
48
49
 
49
- # Basic knowledge
50
+ ## Basic knowledge
50
51
 
51
52
  * All Migrations have to be ruby classes that inherits from Migration class.
52
53
  * Migrations have a direction (UP or DOWN)
@@ -59,7 +60,7 @@ Exodus - a migration framework for MongoDb
59
60
  * Migrations will run in order using the migration_number
60
61
  * Migrations can be rerunnable safe, rerunnable safe migrations will run on each db:migrate even if the migration has already been run!
61
62
 
62
- ## To Do when writting your own
63
+ ### To Do when writting your own
63
64
 
64
65
  * Give it a migration_number
65
66
  * Initialize it and define status_complete and description
@@ -68,7 +69,7 @@ Exodus - a migration framework for MongoDb
68
69
  * If your migration contains distinct steps that you want to split up I recommand using the "step" DSL
69
70
 
70
71
 
71
- ## Good example
72
+ ### Good example
72
73
 
73
74
  class RenameNameToFirstName < Exodus::Migration
74
75
  self.migration_number = 1
@@ -112,48 +113,60 @@ Exodus - a migration framework for MongoDb
112
113
  end
113
114
  end
114
115
 
115
- # Commands
116
+ ## Commands
116
117
 
117
- ## db:migrate
118
+ ### db:migrate
118
119
  Executes all migrations that haven't run yet. You can the STEP enviroment to run only the first x ones.
119
120
 
120
121
  rake db:migrate
121
122
  rake db:migrate STEP=2
122
123
 
123
- ## db:rollback
124
+ ### db:rollback
124
125
  Rolls back all migrations that haven't run yet. You can set the STEP enviroment variable to rollback only the last x ones.
125
126
 
126
127
  rake db:rollback
127
128
  rake db:rollback STEP=2
128
129
 
129
- ## db:migrate:custom
130
+ ### db:migrate:show
131
+ Print in the console all migrations that rake db:migrate will run. Does NOT run any migration. You can the STEP enviroment to run only the first x ones.
132
+
133
+ rake db:migrate:show
134
+ rake db:migrate:show STEP=2
135
+
136
+ ### db:rollback:show
137
+ Print in the console all migrations that rake db:rollback will run. Does NOT run any migration. You can set the STEP enviroment variable to rollback only the last x ones.
138
+
139
+ rake db:rollback:show
140
+ rake db:rollback:show STEP=2
141
+
142
+ ### db:migrate:custom
130
143
  Executes all custom migrations that haven't run yet. Custom migrations will be loaded from your config file. Custom migrations will run in order of appearence. You can set the STEP enviroment variable to rollback only the last x ones.
131
144
 
132
145
  rake db:migrate:custom
133
146
  rake db:migrate:custom STEP=2
134
147
 
135
- ## db:rollback:custom
148
+ ### db:rollback:custom
136
149
  Executes all custom migrations that haven't run yet. Custom migrations will be loaded from your config file. Custom migrations will run in order of appearence. You can set the STEP enviroment variable to rollback only the last x ones.
137
150
 
138
151
  rake db:rollback:custom
139
152
  rake db:rollback:custom STEP=2
140
153
 
141
- ## db:migrate:list
154
+ ### db:migrate:list
142
155
  Lists all the migrations.
143
156
 
144
157
  rake db:migrate:list
145
158
 
146
- ## db:migrate:status
159
+ ### db:migrate:status
147
160
  Gives a preview of what as been run on the current database.
148
161
 
149
162
  rake db:migrate:status
150
163
 
151
- ## db:migrate:yml_status
164
+ ### db:migrate:yml_status
152
165
  Prints on the screen the content of the yml configuration file
153
166
 
154
167
  rake db:migrate:yml_status
155
168
 
156
- ## db:mongo_info
169
+ ### db:mongo_info
157
170
  Prints on the screen information about the current mongo connection
158
171
 
159
172
  rake db:mongo_info
data/lib/exodus.rb CHANGED
@@ -29,64 +29,69 @@ module Exodus
29
29
  end
30
30
 
31
31
  # Sorts and executes a number of migrations equal to step (or all of them if step is nil)
32
- def run_sorted_migrations(direction, migrations, step = nil)
33
- if migrations
34
- sorted_migrations = order_with_direction(migrations, direction)
35
- run_migrations(direction, sorted_migrations, step)
32
+ def sort_and_run_migrations(direction, migrations_info, step = nil, show_characteristic = false)
33
+ if migrations_info
34
+ sorted_migrations_info = order_with_direction(migrations_info, direction)
35
+ runnable_migrations = find_runable_migrations(direction, sorted_migrations_info, step)
36
+
37
+ if show_characteristic
38
+ runnable_migrations.map(&:characteristic)
39
+ else
40
+ run_migrations(direction, runnable_migrations)
41
+ end
36
42
  else
37
43
  raise StandardError, "no migrations given in argument!"
38
44
  end
39
45
  end
40
46
 
47
+ # Instanciates all of the migrations and returns the ones that are runnable
48
+ def find_runable_migrations(direction, migrations_info, step)
49
+ runnable_migrations = migrations_info.map do |migration_class, args|
50
+ migration = instanciate_migration(migration_class, args)
51
+ migration if migration.is_runnable?(direction)
52
+ end.compact
41
53
 
42
- # Executes a number of migrations equal to step (or all of them if step is nil)
43
- def run_migrations(direction, migrations, step = nil)
44
- if migrations
45
- migrations = migrations.shift(step.to_i) if step
46
- run_each(direction, migrations)
47
- else
48
- puts "Unable to find migrations!"
49
- end
50
- end
54
+ step ? runnable_migrations.shift(step.to_i) : runnable_migrations
55
+ end
51
56
 
52
57
  # Migrations order need to be reverted if the direction is down
53
58
  # (we want the latest executed migration to be the first reverted)
54
- def order_with_direction(migrations, direction)
55
- sorted_migrations = sort_migrations(migrations)
59
+ def order_with_direction(migrations_info, direction)
60
+ sorted_migrations = sort_migrations(migrations_info)
56
61
  direction == Migration::UP ? sorted_migrations : sorted_migrations.reverse
57
62
  end
58
63
 
59
- def sort_migrations(migrations)
60
- migrations.sort_by {|migration,args| migration.migration_number }
64
+ # Sorts migrations using the migration number
65
+ def sort_migrations(migrations_info)
66
+ migrations_info.sort_by {|migration,args| migration.migration_number }
61
67
  end
62
68
 
63
69
  # Runs each migration separately, migration's arguments default value is set to an empty hash
64
- def run_each(direction, migrations)
65
- migrations.each do |migration_class, args|
66
- print_tabulation { run_one_migration(migration_class, direction, args || {}) }
70
+ def run_migrations(direction, migrations)
71
+ migrations.each do |migration|
72
+ print_tabulation { run_one_migration(migration, direction) }
67
73
  end
68
74
  end
69
-
70
75
 
71
- # Otherwise instanciate a new one
72
- # Runs the migration if it is runnable
73
- def run_one_migration(migration_class, direction, args)
74
- current_migration = find_existing_migration(migration_class, args) || migration_class.new(:status => {:arguments => args})
75
-
76
- if current_migration.is_runnable?(direction)
77
- begin
78
- current_migration.run(direction)
79
- current_migration.status.error = nil
80
- rescue Exception => e
81
- current_migration.failure = e
82
- current_migration.save!
83
- raise
84
- end
85
-
86
- current_migration.save!
87
- else
88
- puts "#{current_migration.class}#{current_migration.status.arguments}(#{direction}) as Already been run (or is not runnable)."
89
- end
76
+ # Runs the migration and save the current status into mongo
77
+ def run_one_migration(migration, direction)
78
+ begin
79
+ migration.run(direction)
80
+ migration.status.error = nil
81
+ rescue Exception => e
82
+ migration.failure = e
83
+ migration.save!
84
+ raise
85
+ end
86
+
87
+ migration.save!
88
+ end
89
+
90
+ # Database lookup to find a migration given its class and its arguments
91
+ # Instanciates it if the migration is not present in the database
92
+ def instanciate_migration(migration_class, args)
93
+ args ||= {}
94
+ find_existing_migration(migration_class, args) || migration_class.new(:status => {:arguments => args})
90
95
  end
91
96
 
92
97
  # Looks up in the database if a migration with the same class and same arguments already exists
@@ -95,6 +100,7 @@ module Exodus
95
100
  existing_migrations = migration_class.collection.find('status.arguments' => args)
96
101
  existing_migrations.detect do |migration|
97
102
  existing_migration = migration_class.load(migration)
103
+
98
104
  return existing_migration if existing_migration.is_a?(migration_class)
99
105
  end
100
106
  end
@@ -21,6 +21,7 @@ module Exodus
21
21
 
22
22
  paragraphes.each_with_index do |sentences, paragraph_number|
23
23
  sentences.each_with_index do |sentence, column|
24
+ sentence = sentence.to_s
24
25
  words = sentence.gsub('=>', ' => ').split(' ') || ''
25
26
 
26
27
  if sentence.size > space_number && (words).size > 1
@@ -124,6 +124,10 @@ module Exodus
124
124
  (direction == UP && self.status.current_status == self.status_complete) || (direction == DOWN && self.status.current_status == 0)
125
125
  end
126
126
 
127
+ def characteristic
128
+ "#{self.class}: #{self.status.arguments}"
129
+ end
130
+
127
131
  protected
128
132
 
129
133
  # Executes a given block if the status has not being processed
@@ -1,3 +1,3 @@
1
1
  module Exodus
2
- VERSION = "1.0.6"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -88,19 +88,22 @@ describe Exodus do
88
88
  describe "When the migration has not been ran" do
89
89
  describe "with a valid migration" do
90
90
  it "should successfully create the migration" do
91
- lambda{ Exodus.run_one_migration(Migration_test6, 'up', {})}.should
91
+ migration = Exodus.instanciate_migration(Migration_test6, {})
92
+ lambda{ Exodus.run_one_migration(migration, 'up')}.should
92
93
  change {Exodus::Migration}.by(1)
93
94
  end
94
95
  end
95
96
 
96
97
  describe "with a failing migration" do
98
+ let(:migration) {Exodus.instanciate_migration(Migration_test7, {})}
99
+
97
100
  it "should raise an error" do
98
- lambda{ Exodus.run_one_migration(Migration_test7, 'up', {})}.should
101
+ lambda {Exodus.run_one_migration(migration, 'up')}.should
99
102
  raise_error(StandardError)
100
103
  end
101
104
 
102
105
  it "should create the migration" do
103
- lambda{ Exodus.run_one_migration(Migration_test7, 'up', {})}.should
106
+ lambda {Exodus.run_one_migration(migration, 'up')}.should
104
107
  change {Exodus::Migration}.by(1)
105
108
  end
106
109
  end
@@ -109,18 +112,20 @@ describe Exodus do
109
112
  describe "When the migration has been ran" do
110
113
  describe "with a valid migration" do
111
114
  it "should not create a new migration" do
112
- Exodus.run_one_migration(Migration_test6, 'up', {})
115
+ migration = Exodus.instanciate_migration(Migration_test6, {})
116
+ Exodus.run_one_migration(migration, 'up')
113
117
 
114
- lambda{ Exodus.run_one_migration(Migration_test6, 'up', {})}.should
118
+ lambda {Exodus.run_one_migration(migration, 'up')}.should
115
119
  change {Exodus::Migration}.by(0)
116
120
  end
117
121
  end
118
122
 
119
123
  describe "with a failing migration" do
120
124
  it "should not create a new migration" do
121
- Exodus.run_one_migration(Migration_test7, 'up', {}) rescue nil
125
+ migration = Exodus.instanciate_migration(Migration_test7, {})
126
+ Exodus.run_one_migration(migration, 'up') rescue nil
122
127
 
123
- lambda{ Exodus.run_one_migration(Migration_test7, 'up', {})}.should
128
+ lambda {Exodus.run_one_migration(migration, 'up')}.should
124
129
  change {Exodus::Migration}.by(0)
125
130
  end
126
131
  end
@@ -153,28 +158,35 @@ describe Exodus do
153
158
 
154
159
  describe "When a different migration has been ran" do
155
160
  it "should not find any migration" do
156
- Exodus.run_one_migration(Migration_test6, 'up', {})
161
+ migration = Exodus.instanciate_migration(Migration_test6, {})
162
+ Exodus.run_one_migration(migration, 'up')
163
+
157
164
  Exodus.find_existing_migration(Migration_test8, {}).should be_nil
158
165
  end
159
166
  end
160
167
 
161
168
  describe "When the migration has been ran" do
162
169
  it "should find the migration" do
163
- Exodus.run_one_migration(Migration_test8, 'up', {})
170
+ migration = Exodus.instanciate_migration(Migration_test8, {})
171
+ Exodus.run_one_migration(migration, 'up')
172
+
164
173
  Exodus.find_existing_migration(Migration_test8, {}).class.should == Migration_test8
165
174
  end
166
175
  end
167
176
 
168
177
  describe "When all migrations have been ran" do
169
178
  it "should find the migration" do
170
- Exodus.run_one_migration(Migration_test6, 'up', {})
171
- Exodus.run_one_migration(Migration_test8, 'up', {})
179
+ migration6 = Exodus.instanciate_migration(Migration_test6, {})
180
+ migration8 = Exodus.instanciate_migration(Migration_test8, {})
181
+ Exodus.run_one_migration(migration6, 'up')
182
+ Exodus.run_one_migration(migration8, 'up')
183
+
172
184
  Exodus.find_existing_migration(Migration_test8, {}).class.should == Migration_test8
173
185
  end
174
186
  end
175
187
  end
176
188
 
177
- describe "run_migrations and run_sorted_migrations" do
189
+ describe "run_migrations and sort_and_run_migrations" do
178
190
  before do
179
191
  class Migration_test9 < Exodus::Migration
180
192
  @migration_number = 9
@@ -197,7 +209,9 @@ describe Exodus do
197
209
 
198
210
  describe "running the same migration in a different order with run_migrations" do
199
211
  it "should successfully run them in different order" do
200
- migrations = [[Migration_test9, {}], [Migration_test10, {}]]
212
+ migrations_info = [[Migration_test9, {}], [Migration_test10, {}]]
213
+ migrations = migrations_info.map{|migration_info| Exodus.instanciate_migration(*migration_info)}
214
+
201
215
  Exodus.run_migrations('up', migrations)
202
216
  users = UserSupport.all
203
217
 
@@ -214,10 +228,10 @@ describe Exodus do
214
228
  end
215
229
  end
216
230
 
217
- describe "running the same migration in a different order with run_sorted_migrations" do
231
+ describe "running the same migration in a different order with sort_and_run_migrations" do
218
232
  it "should successfully run them in the same order" do
219
233
  migrations = [[Migration_test9, {}], [Migration_test10, {}]]
220
- Exodus.run_sorted_migrations('up', migrations)
234
+ Exodus.sort_and_run_migrations('up', migrations)
221
235
  users = UserSupport.all
222
236
 
223
237
  users.first.name.should == "Thomas"
@@ -225,12 +239,24 @@ describe Exodus do
225
239
 
226
240
  UserSupport.collection.drop
227
241
  Exodus::Migration.collection.drop
228
- Exodus.run_sorted_migrations('up', migrations.reverse)
242
+ Exodus.sort_and_run_migrations('up', migrations.reverse)
229
243
  users = UserSupport.all
230
244
 
231
245
  users.first.name.should == "Thomas"
232
246
  users.last.name.should == "Tester"
233
247
  end
234
248
  end
249
+
250
+ describe "Getting migration information" do
251
+ it "should successfully print the migrations information" do
252
+ migrations = [[Migration_test9, {}], [Migration_test10, {}]]
253
+ Exodus.sort_and_run_migrations('up', migrations, nil, true).should == ["Migration_test9: #{{}}", "Migration_test10: #{{}}"]
254
+ end
255
+
256
+ it "should successfully print the first migration information" do
257
+ migrations = [[Migration_test9, {}], [Migration_test10, {}]]
258
+ Exodus.sort_and_run_migrations('up', migrations, 1, true).should == ["Migration_test9: #{{}}"]
259
+ end
260
+ end
235
261
  end
236
262
  end
data/tasks/exodus.rake CHANGED
@@ -22,7 +22,7 @@ namespace :db do
22
22
  task :migrate => :require_env do
23
23
  time_it "db:migrate#{" step #{step}" if step}" do
24
24
  migrations = Exodus::Migration.load_all(Exodus.migrations_info.migrate)
25
- Exodus::run_sorted_migrations('up', migrations, step)
25
+ Exodus::sort_and_run_migrations('up', migrations, step)
26
26
  end
27
27
  end
28
28
 
@@ -30,7 +30,7 @@ namespace :db do
30
30
  task :rollback => :require_env do
31
31
  time_it "db:rollback#{" step #{step}" if step}" do
32
32
  migrations = Exodus::Migration.load_all(Exodus.migrations_info.rollback)
33
- Exodus::run_sorted_migrations('down', migrations, step)
33
+ Exodus::sort_and_run_migrations('down', migrations, step)
34
34
  end
35
35
  end
36
36
 
@@ -40,6 +40,13 @@ namespace :db do
40
40
  end
41
41
 
42
42
  namespace :migrate do
43
+ desc "Show which migrations will be run when calling 'rake db:migrate'"
44
+ task :show => :require_env do
45
+ migrations = Exodus::Migration.load_all(Exodus.migrations_info.migrate)
46
+ puts "List of all the migrations that will be executed by running 'rake db:rollback#{" STEP=#{step}" if step}': \n\n"
47
+ puts Exodus::sort_and_run_migrations('up', migrations, step, true)
48
+ end
49
+
43
50
  desc "Manually migrates specified migrations (specify migrations or use config/migration.yml)"
44
51
  task :custom, [:migrations_info] => :require_env do |t, args|
45
52
  time_it "db:migrate_custom#{" step #{step}" if step}" do
@@ -49,7 +56,8 @@ namespace :db do
49
56
  Exodus::Migration.load_custom(Exodus.migrations_info.migrate_custom)
50
57
  end
51
58
 
52
- Exodus::run_migrations('up', migrations, step)
59
+ migrations = migrations.shift(step.to_i) if step
60
+ Exodus::run_migrations('up', migrations)
53
61
  end
54
62
  end
55
63
 
@@ -70,6 +78,13 @@ namespace :db do
70
78
  end
71
79
 
72
80
  namespace :rollback do
81
+ desc "Show which migrations will be run when calling 'rake db:rollback'"
82
+ task :show => :require_env do
83
+ migrations = Exodus::Migration.load_all(Exodus.migrations_info.migrate)
84
+ puts "List of all the migrations that will be executed by running 'rake db:rollback#{" STEP=#{step}" if step}': \n\n"
85
+ puts Exodus::sort_and_run_migrations('down', migrations, step, true)
86
+ end
87
+
73
88
  desc "Manually rolls the database back using specified migrations (specify migrations or use config/migration.yml)"
74
89
  task :custom, [:migrations_info] => :require_env do |t, args|
75
90
  time_it "db:rollback_custom#{" step #{step}" if step}" do
@@ -79,7 +94,8 @@ namespace :db do
79
94
  Exodus::Migration.load_custom(Exodus.migrations_info.rollback_custom)
80
95
  end
81
96
 
82
- Exodus::run_migrations('down', migrations, step)
97
+ migrations = migrations.shift(step.to_i) if step
98
+ Exodus::run_migrations('down', migrations)
83
99
  end
84
100
  end
85
101
  end
metadata CHANGED
@@ -1,88 +1,62 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: exodus
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.6
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - Thomas Dmytryk
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-04 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2013-10-28 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
15
  name: mongo_mapper
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
16
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: bson_ext
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - &id002
20
+ - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
38
23
  type: :runtime
24
+ version_requirements: *id001
25
+ - !ruby/object:Gem::Dependency
26
+ name: bson_ext
39
27
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
28
+ requirement: &id003 !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - *id002
31
+ type: :runtime
32
+ version_requirements: *id003
33
+ - !ruby/object:Gem::Dependency
47
34
  name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
35
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: rake
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
36
+ requirement: &id004 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - *id002
70
39
  type: :development
40
+ version_requirements: *id004
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
71
43
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
44
+ requirement: &id005 !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - *id002
47
+ type: :development
48
+ version_requirements: *id005
78
49
  description: Exodus is a migration framework for MongoDb
79
- email:
50
+ email:
80
51
  - thomas@fanhattan.com
81
52
  - thomas.dmytryk@supinfo.com
82
53
  executables: []
54
+
83
55
  extensions: []
56
+
84
57
  extra_rdoc_files: []
85
- files:
58
+
59
+ files:
86
60
  - .gitignore
87
61
  - .rspec
88
62
  - .rvmrc
@@ -107,31 +81,29 @@ files:
107
81
  - spec/support/user_support.rb
108
82
  - tasks/exodus.rake
109
83
  homepage: https://github.com/ThomasAlxDmy/Exodus
110
- licenses:
84
+ licenses:
111
85
  - MIT
86
+ metadata: {}
87
+
112
88
  post_install_message:
113
89
  rdoc_options: []
114
- require_paths:
90
+
91
+ require_paths:
115
92
  - lib
116
- required_ruby_version: !ruby/object:Gem::Requirement
117
- none: false
118
- requirements:
119
- - - ! '>='
120
- - !ruby/object:Gem::Version
121
- version: '0'
122
- required_rubygems_version: !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
125
- - - ! '>='
126
- - !ruby/object:Gem::Version
127
- version: '0'
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - *id002
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - *id002
128
99
  requirements: []
100
+
129
101
  rubyforge_project:
130
- rubygems_version: 1.8.23
102
+ rubygems_version: 2.0.13
131
103
  signing_key:
132
- specification_version: 3
104
+ specification_version: 4
133
105
  summary: Exodus uses mongomapper to provide a complete migration framework
134
- test_files:
106
+ test_files:
135
107
  - spec/exodus/exodus_spec.rb
136
108
  - spec/exodus/migration_spec.rb
137
109
  - spec/spec_helper.rb