standalone_migrations 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -8,6 +8,15 @@ Install Ruby, RubyGems and a ruby-database driver (e.g. `gem install mysql`) the
8
8
  Add to `Rakefile` in your projects base directory:
9
9
  begin
10
10
  require 'tasks/standalone_migrations'
11
+ MigratorTasks.new do |t|
12
+ # t.migrations = "db/migrations"
13
+ # t.config = "db/config.yml"
14
+ # t.schema = "db/schema.rb"
15
+ # t.env = "DB"
16
+ # t.default_env = "development"
17
+ # t.verbose = true
18
+ # t.log_level = Logger::ERROR
19
+ end
11
20
  rescue LoadError => e
12
21
  puts "gem install standalone_migrations to get db:migrate:* tasks! (Error: #{e})"
13
22
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.5
1
+ 0.3.0
@@ -1,137 +1,169 @@
1
- # Every important options should be overwriteable with MIGRATION_OPTIONS
2
- base = File.expand_path('.')
3
- here = File.expand_path(File.dirname(File.dirname(File.dirname((__FILE__)))))
1
+ require 'rake'
2
+ require 'rake/tasklib'
3
+ require 'logger'
4
4
 
5
- options = {
6
- :base => base,
7
- :vendor => "#{here}/vendor",
8
- :migrations => "#{base}/db/migrations",
9
- :config => "#{base}/db/config.yml",
10
- :schema => "#{base}/db/schema.rb",
11
- :env => 'DB',
12
- :default_env => 'development'
13
- }
14
- options = options.merge(MIGRATION_OPTIONS) if defined?(MIGRATION_OPTIONS)
15
-
16
- # Add to load_path every "lib/" directory in vendor
17
- Dir["#{options[:vendor]}/**/lib"].each{|p| $LOAD_PATH << p }
18
-
19
- namespace :db do
20
- task :ar_init do
21
- require 'logger'
22
- require 'active_record'
23
- ENV[options[:env]] ||= options[:default_env]
24
-
25
- require 'erb'
26
- ActiveRecord::Base.configurations = YAML::load(ERB.new(IO.read(options[:config])).result)
27
- ActiveRecord::Base.establish_connection(ENV[options[:env]])
28
- logger = Logger.new $stderr
29
- logger.level = Logger::INFO
30
- ActiveRecord::Base.logger = logger
5
+ class MigratorTasks < ::Rake::TaskLib
6
+ attr_accessor :name, :base, :vendor, :config, :schema, :env, :default_env, :verbose, :log_level
7
+ attr_reader :migrations
8
+
9
+ def initialize(name = :migrator)
10
+ @name = name
11
+ base = File.expand_path('.')
12
+ here = File.expand_path(File.dirname(File.dirname(File.dirname((__FILE__)))))
13
+ @base = base
14
+ @vendor = "#{here}/vendor"
15
+ @migrations = ["#{base}/db/migrations"]
16
+ @config = "#{base}/db/config.yml"
17
+ @schema = "#{base}/db/schema.rb"
18
+ @env = 'DB'
19
+ @default_env = 'development'
20
+ @verbose = true
21
+ @log_level = Logger::ERROR
22
+ yield self if block_given?
23
+ # Add to load_path every "lib/" directory in vendor
24
+ Dir["#{vendor}/**/lib"].each{|p| $LOAD_PATH << p }
25
+ define
31
26
  end
32
-
33
- desc "Migrate the database using the scripts in the migrations directory. Target specific version with VERSION=x. Turn off output with VERBOSE=false."
34
- task :migrate => :ar_init do
35
- require "#{options[:vendor]}/migration_helpers/init"
36
- ActiveRecord::Migration.verbose = (ENV["VERBOSE"] == "true")
37
- ActiveRecord::Migrator.migrate(options[:migrations], ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
38
- Rake::Task["db:schema:dump"].execute
27
+
28
+ def migrations=(*value)
29
+ @migrations = value.flatten
39
30
  end
31
+
32
+ def define
33
+ namespace :db do
34
+ task :ar_init do
35
+ require 'active_record'
36
+ ENV[@env] ||= @default_env
37
+
38
+ require 'erb'
39
+ ActiveRecord::Base.configurations = YAML::load(ERB.new(IO.read(@config)).result)
40
+ ActiveRecord::Base.establish_connection(ENV[@env])
41
+ logger = Logger.new $stderr
42
+ logger.level = @log_level
43
+ ActiveRecord::Base.logger = logger
44
+ end
40
45
 
41
- namespace :migrate do
42
- [:up, :down].each do |direction|
43
- desc "Runs the '#{direction}' for a given migration VERSION."
44
- task direction => :ar_init do
45
- version = ENV["VERSION"].to_i
46
- raise "VERSION is required (must be a number)" if version == 0
47
- ActiveRecord::Migrator.run(direction, options[:migrations], version)
46
+ desc "Migrate the database using the scripts in the migrations directory. Target specific version with VERSION=x. Turn off output with VERBOSE=false."
47
+ task :migrate => :ar_init do
48
+ require "#{@vendor}/migration_helpers/init"
49
+ ActiveRecord::Migration.verbose = ENV['VERBOSE'] || @verbose
50
+ @migrations.each do |path|
51
+ ActiveRecord::Migrator.migrate(path, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
52
+ end
48
53
  Rake::Task["db:schema:dump"].execute
49
54
  end
50
- end
51
- end
52
-
53
- desc "Raises an error if there are pending migrations"
54
- task :abort_if_pending_migrations => :ar_init do
55
- pending_migrations = ActiveRecord::Migrator.new(:up, options[:migrations]).pending_migrations
56
55
 
57
- if pending_migrations.any?
58
- puts "You have #{pending_migrations.size} pending migrations:"
59
- pending_migrations.each do |pending_migration|
60
- puts ' %4d %s' % [pending_migration.version, pending_migration.name]
56
+ namespace :migrate do
57
+ [:up, :down].each do |direction|
58
+ desc "Runs the '#{direction}' for a given migration VERSION."
59
+ task direction => :ar_init do
60
+ ActiveRecord::Migration.verbose = @verbose
61
+ version = ENV["VERSION"].to_i
62
+ raise "VERSION is required (must be a number)" if version == 0
63
+ migration_path = nil
64
+ if @migrations.length == 1
65
+ migration_path = @migrations.first
66
+ else
67
+ @migrations.each do |path|
68
+ Dir[File.join(path, '*.rb')].each do |file|
69
+ if File.basename(file).match(/^\d+/)[0] == version.to_s
70
+ migration_path = path
71
+ break
72
+ end
73
+ end
74
+ end
75
+ raise "Migration #{version} wasn't found on paths #{@migrations.join(', ')}" if migration_path.nil?
76
+ end
77
+ ActiveRecord::Migrator.run(direction, migration_path, version)
78
+ Rake::Task["db:schema:dump"].execute
79
+ end
80
+ end
61
81
  end
62
- abort %{Run "rake db:migrate" to update your database then try again.}
63
- end
64
- end
65
-
66
- namespace :schema do
67
- desc "Create schema.rb file that can be portably used against any DB supported by AR"
68
- task :dump => :ar_init do
69
- require 'active_record/schema_dumper'
70
- File.open(ENV['SCHEMA'] || options[:schema], "w") do |file|
71
- ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
82
+
83
+ desc "Raises an error if there are pending migrations"
84
+ task :abort_if_pending_migrations => :ar_init do
85
+ @migrations.each do |path|
86
+ pending_migrations = ActiveRecord::Migrator.new(:up, path).pending_migrations
87
+
88
+ if pending_migrations.any?
89
+ puts "You have #{pending_migrations.size} pending migrations:"
90
+ pending_migrations.each do |pending_migration|
91
+ puts ' %4d %s' % [pending_migration.version, pending_migration.name]
92
+ end
93
+ abort %{Run "rake db:migrate" to update your database then try again.}
94
+ end
95
+ end
72
96
  end
73
- end
74
97
 
75
- desc "Load a ar_schema.rb file into the database"
76
- task :load => :ar_init do
77
- file = ENV['SCHEMA'] || options[:schema]
78
- load(file)
79
- end
80
- end
81
-
82
- namespace :test do
83
- desc "Recreate the test database from the current schema.rb"
84
- task :load => ['db:ar_init', 'db:test:purge'] do
85
- ActiveRecord::Base.establish_connection(:test)
86
- ActiveRecord::Schema.verbose = false
87
- Rake::Task["db:schema:load"].invoke
88
- end
98
+ namespace :schema do
99
+ desc "Create schema.rb file that can be portably used against any DB supported by AR"
100
+ task :dump => :ar_init do
101
+ require 'active_record/schema_dumper'
102
+ File.open(ENV['SCHEMA'] || @schema, "w") do |file|
103
+ ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
104
+ end
105
+ end
89
106
 
90
- desc "Empty the test database"
91
- task :purge => 'db:ar_init' do
92
- config = ActiveRecord::Base.configurations['test']
93
- case config["adapter"]
94
- when "mysql"
95
- ActiveRecord::Base.establish_connection(:test)
96
- ActiveRecord::Base.connection.recreate_database(config["database"], config)
97
- when "postgresql" #TODO i doubt this will work <-> methods are not defined
98
- ActiveRecord::Base.clear_active_connections!
99
- drop_database(config)
100
- create_database(config)
101
- when "sqlite", "sqlite3"
102
- db_file = config["database"] || config["dbfile"]
103
- File.delete(db_file) if File.exist?(db_file)
104
- when "sqlserver"
105
- drop_script = "#{config["host"]}.#{config["database"]}.DP1".gsub(/\\/,'-')
106
- `osql -E -S #{config["host"]} -d #{config["database"]} -i db\\#{drop_script}`
107
- `osql -E -S #{config["host"]} -d #{config["database"]} -i db\\test_structure.sql`
108
- when "oci", "oracle"
109
- ActiveRecord::Base.establish_connection(:test)
110
- ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl|
111
- ActiveRecord::Base.connection.execute(ddl)
107
+ desc "Load a ar_schema.rb file into the database"
108
+ task :load => :ar_init do
109
+ file = ENV['SCHEMA'] || @schema
110
+ load(file)
112
111
  end
113
- when "firebird"
114
- ActiveRecord::Base.establish_connection(:test)
115
- ActiveRecord::Base.connection.recreate_database!
116
- else
117
- raise "Task not supported by #{config["adapter"].inspect}"
118
112
  end
119
- end
113
+
114
+ namespace :test do
115
+ desc "Recreate the test database from the current schema.rb"
116
+ task :load => ['db:ar_init', 'db:test:purge'] do
117
+ ActiveRecord::Base.establish_connection(:test)
118
+ ActiveRecord::Schema.verbose = false
119
+ Rake::Task["db:schema:load"].invoke
120
+ end
121
+
122
+ desc "Empty the test database"
123
+ task :purge => 'db:ar_init' do
124
+ config = ActiveRecord::Base.configurations['test']
125
+ case config["adapter"]
126
+ when "mysql"
127
+ ActiveRecord::Base.establish_connection(:test)
128
+ ActiveRecord::Base.connection.recreate_database(config["database"], config)
129
+ when "postgresql" #TODO i doubt this will work <-> methods are not defined
130
+ ActiveRecord::Base.clear_active_connections!
131
+ drop_database(config)
132
+ create_database(config)
133
+ when "sqlite", "sqlite3"
134
+ db_file = config["database"] || config["dbfile"]
135
+ File.delete(db_file) if File.exist?(db_file)
136
+ when "sqlserver"
137
+ drop_script = "#{config["host"]}.#{config["database"]}.DP1".gsub(/\\/,'-')
138
+ `osql -E -S #{config["host"]} -d #{config["database"]} -i db\\#{drop_script}`
139
+ `osql -E -S #{config["host"]} -d #{config["database"]} -i db\\test_structure.sql`
140
+ when "oci", "oracle"
141
+ ActiveRecord::Base.establish_connection(:test)
142
+ ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl|
143
+ ActiveRecord::Base.connection.execute(ddl)
144
+ end
145
+ when "firebird"
146
+ ActiveRecord::Base.establish_connection(:test)
147
+ ActiveRecord::Base.connection.recreate_database!
148
+ else
149
+ raise "Task not supported by #{config["adapter"].inspect}"
150
+ end
151
+ end
120
152
 
121
- desc 'Check for pending migrations and load the test schema'
122
- task :prepare => ['db:abort_if_pending_migrations', 'db:test:load']
123
- end
153
+ desc 'Check for pending migrations and load the test schema'
154
+ task :prepare => ['db:abort_if_pending_migrations', 'db:test:load']
155
+ end
124
156
 
125
- desc "Create a new migration"
126
- task :new_migration do |t|
127
- unless migration = ENV['name']
128
- puts "Error: must provide name of migration to generate."
129
- puts "For example: rake #{t.name} name=add_field_to_form"
130
- abort
131
- end
157
+ desc "Create a new migration"
158
+ task :new_migration do |t|
159
+ unless migration = ENV['name']
160
+ puts "Error: must provide name of migration to generate."
161
+ puts "For example: rake #{t.name} name=add_field_to_form"
162
+ abort
163
+ end
132
164
 
133
- class_name = migration.split('_').map{|s| s.capitalize }.join
134
- file_contents = <<eof
165
+ class_name = migration.split('_').map{|s| s.capitalize }.join
166
+ file_contents = <<eof
135
167
  class #{class_name} < ActiveRecord::Migration
136
168
  def self.up
137
169
  end
@@ -141,12 +173,14 @@ class #{class_name} < ActiveRecord::Migration
141
173
  end
142
174
  end
143
175
  eof
176
+ migration_path = @migrations.first
177
+ FileUtils.mkdir_p(migration_path) unless File.exist?(migration_path)
178
+ file_name = "#{migration_path}/#{Time.now.utc.strftime('%Y%m%d%H%M%S')}_#{migration}.rb"
144
179
 
145
- FileUtils.mkdir_p(options[:migrations]) unless File.exist?(options[:migrations])
146
- file_name = "#{options[:migrations]}/#{Time.now.utc.strftime('%Y%m%d%H%M%S')}_#{migration}.rb"
180
+ File.open(file_name, 'w'){|f| f.write file_contents }
147
181
 
148
- File.open(file_name, 'w'){|f| f.write file_contents }
149
-
150
- puts "Created migration #{file_name}"
182
+ puts "Created migration #{file_name}"
183
+ end
184
+ end
151
185
  end
152
- end
186
+ end
@@ -32,18 +32,52 @@ describe 'Standalone migrations' do
32
32
  write(migration, content)
33
33
  migration.match(/\d{14}/)[0]
34
34
  end
35
-
36
- before do
37
- `rm -rf spec/tmp` if File.exist?('spec/tmp')
38
- `mkdir spec/tmp`
35
+
36
+ def write_rakefile(config=nil)
39
37
  write 'Rakefile', <<-TXT
40
38
  $LOAD_PATH.unshift '#{File.expand_path('lib')}'
41
39
  begin
42
40
  require 'tasks/standalone_migrations'
41
+ MigratorTasks.new do |t|
42
+ t.log_level = Logger::INFO
43
+ #{config}
44
+ end
43
45
  rescue LoadError => e
44
46
  puts "gem install standalone_migrations to get db:migrate:* tasks! (Error: \#{e})"
45
47
  end
46
48
  TXT
49
+ end
50
+
51
+ def write_multiple_migrations
52
+ write_rakefile %{t.migrations = "db/migrations", "db/migrations2"}
53
+ write "db/migrations/20100509095815_create_tests.rb", <<-TXT
54
+ class CreateTests < ActiveRecord::Migration
55
+ def self.up
56
+ puts "UP-CreateTests"
57
+ end
58
+
59
+ def self.down
60
+ puts "DOWN-CreateTests"
61
+ end
62
+ end
63
+ TXT
64
+ write "db/migrations2/20100509095816_create_tests2.rb", <<-TXT
65
+ class CreateTests2 < ActiveRecord::Migration
66
+ def self.up
67
+ puts "UP-CreateTests2"
68
+ end
69
+
70
+ def self.down
71
+ puts "DOWN-CreateTests2"
72
+ end
73
+ end
74
+ TXT
75
+ end
76
+
77
+ before do
78
+ `rm -rf spec/tmp` if File.exist?('spec/tmp')
79
+ `mkdir spec/tmp`
80
+ write_rakefile
47
81
  write 'db/config.yml', <<-TXT
48
82
  development:
49
83
  adapter: sqlite3
@@ -55,65 +89,131 @@ describe 'Standalone migrations' do
55
89
  end
56
90
 
57
91
  describe 'db:new_migration' do
58
- it "fails if i do not add a name" do
59
- run("rake db:new_migration").should_not =~ /SUCCESS/
60
- end
92
+ context "single migration path" do
93
+ it "fails if i do not add a name" do
94
+ run("rake db:new_migration").should_not =~ /SUCCESS/
95
+ end
61
96
 
62
- it "generates a new migration with this name and timestamp" do
63
- run("rake db:new_migration name=test_abc").should =~ %r{Created migration .*spec/tmp/db/migrations/\d+_test_abc\.rb}
64
- run("ls db/migrations").should =~ /^\d+_test_abc.rb$/
97
+ it "generates a new migration with this name and timestamp" do
98
+ run("rake db:new_migration name=test_abc").should =~ %r{Created migration .*spec/tmp/db/migrations/\d+_test_abc\.rb}
99
+ run("ls db/migrations").should =~ /^\d+_test_abc.rb$/
100
+ end
101
+ end
102
+
103
+ context "multiple migration paths" do
104
+ before do
105
+ write_rakefile %{t.migrations = "db/migrations", "db/migrations2"}
106
+ end
107
+ it "chooses the first path" do
108
+ run("rake db:new_migration name=test_abc").should =~ %r{Created migration .*db/migrations/\d+_test_abc\.rb}
109
+ end
65
110
  end
66
111
  end
67
112
 
68
113
  describe 'db:migrate' do
69
- it "does nothing when no migrations are present" do
70
- run("rake db:migrate").should =~ /SUCCESS/
71
- end
114
+ context "single migration path" do
115
+ it "does nothing when no migrations are present" do
116
+ run("rake db:migrate").should =~ /SUCCESS/
117
+ end
72
118
 
73
- it "migrates if i add a migration" do
74
- run("rake db:new_migration name=xxx")
75
- result = run("rake db:migrate")
76
- result.should =~ /SUCCESS/
77
- result.should =~ /Migrating to Xxx \(#{Time.now.year}/
119
+ it "migrates if i add a migration" do
120
+ run("rake db:new_migration name=xxx")
121
+ result = run("rake db:migrate")
122
+ result.should =~ /SUCCESS/
123
+ result.should =~ /Migrating to Xxx \(#{Time.now.year}/
124
+ end
125
+ end
126
+
127
+ context "multiple migration paths" do
128
+ before do
129
+ write_multiple_migrations
130
+ end
131
+ it "runs the migrator on each migration path" do
132
+ result = run("rake db:migrate")
133
+ result.should =~ /Migrating to CreateTests \(#{Time.now.year}/
134
+ result.should =~ /Migrating to CreateTests2 \(#{Time.now.year}/
135
+ end
78
136
  end
79
137
  end
80
138
 
81
139
  describe 'db:migrate:down' do
82
- it "migrates down" do
83
- make_migration('xxx')
84
- sleep 1
85
- version = make_migration('yyy')
86
- run 'rake db:migrate'
140
+ context "single migration path" do
141
+ it "migrates down" do
142
+ make_migration('xxx')
143
+ sleep 1
144
+ version = make_migration('yyy')
145
+ run 'rake db:migrate'
87
146
 
88
- result = run("rake db:migrate:down VERSION=#{version}")
89
- result.should =~ /SUCCESS/
90
- result.should_not =~ /DOWN-xxx/
91
- result.should =~ /DOWN-yyy/
92
- end
147
+ result = run("rake db:migrate:down VERSION=#{version}")
148
+ result.should =~ /SUCCESS/
149
+ result.should_not =~ /DOWN-xxx/
150
+ result.should =~ /DOWN-yyy/
151
+ end
93
152
 
94
- it "fails without version" do
95
- make_migration('yyy')
96
- result = run("rake db:migrate:down")
97
- result.should_not =~ /SUCCESS/
153
+ it "fails without version" do
154
+ make_migration('yyy')
155
+ result = run("rake db:migrate:down")
156
+ result.should_not =~ /SUCCESS/
157
+ end
158
+ end
159
+
160
+ context "multiple migration paths" do
161
+ before do
162
+ write_multiple_migrations
163
+ end
164
+
165
+ it "runs down on the correct path" do
166
+ run 'rake db:migrate'
167
+ result = run 'rake db:migrate:down VERSION=20100509095815'
168
+ result.should =~ /DOWN-CreateTests/
169
+ result.should_not =~ /DOWN-CreateTests2/
170
+ end
171
+
172
+ it "fails if migration number isn't found" do
173
+ run 'rake db:migrate'
174
+ result = run 'rake db:migrate:down VERSION=20100509095820'
175
+ result.should_not =~ /SUCCESS/
176
+ result.should =~ /wasn't found on path/
177
+ end
98
178
  end
99
179
  end
100
180
 
101
181
  describe 'db:migrate:up' do
102
- it "migrates up" do
103
- make_migration('xxx')
104
- run 'rake db:migrate'
105
- sleep 1
106
- version = make_migration('yyy')
107
- result = run("rake db:migrate:up VERSION=#{version}")
108
- result.should =~ /SUCCESS/
109
- result.should_not =~ /UP-xxx/
110
- result.should =~ /UP-yyy/
111
- end
182
+ context "single migration path" do
183
+ it "migrates up" do
184
+ make_migration('xxx')
185
+ run 'rake db:migrate'
186
+ sleep 1
187
+ version = make_migration('yyy')
188
+ result = run("rake db:migrate:up VERSION=#{version}")
189
+ result.should =~ /SUCCESS/
190
+ result.should_not =~ /UP-xxx/
191
+ result.should =~ /UP-yyy/
192
+ end
112
193
 
113
- it "fails without version" do
114
- make_migration('yyy')
115
- result = run("rake db:migrate:up")
116
- result.should_not =~ /SUCCESS/
194
+ it "fails without version" do
195
+ make_migration('yyy')
196
+ result = run("rake db:migrate:up")
197
+ result.should_not =~ /SUCCESS/
198
+ end
199
+ end
200
+
201
+ context "multiple migration paths" do
202
+ before do
203
+ write_multiple_migrations
204
+ end
205
+
206
+ it "runs down on the correct path" do
207
+ result = run 'rake db:migrate:up VERSION=20100509095815'
208
+ result.should =~ /UP-CreateTests/
209
+ result.should_not =~ /UP-CreateTests2/
210
+ end
211
+
212
+ it "fails if migration number isn't found" do
213
+ result = run 'rake db:migrate:up VERSION=20100509095820'
214
+ result.should_not =~ /SUCCESS/
215
+ result.should =~ /wasn't found on path/
216
+ end
117
217
  end
118
218
  end
119
219
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{standalone_migrations}
8
- s.version = "0.2.5"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Todd Huss", "Michael Grosser"]
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: standalone_migrations
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 2
8
- - 5
9
- version: 0.2.5
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Todd Huss
@@ -15,16 +16,18 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2010-04-12 00:00:00 +02:00
19
+ date: 2010-04-12 00:00:00 -10:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
23
  name: rake
23
24
  prerelease: false
24
25
  requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
25
27
  requirements:
26
28
  - - ">="
27
29
  - !ruby/object:Gem::Version
30
+ hash: 3
28
31
  segments:
29
32
  - 0
30
33
  version: "0"
@@ -34,9 +37,11 @@ dependencies:
34
37
  name: activerecord
35
38
  prerelease: false
36
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
37
41
  requirements:
38
42
  - - ">="
39
43
  - !ruby/object:Gem::Version
44
+ hash: 3
40
45
  segments:
41
46
  - 0
42
47
  version: "0"
@@ -72,23 +77,27 @@ rdoc_options:
72
77
  require_paths:
73
78
  - lib
74
79
  required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
75
81
  requirements:
76
82
  - - ">="
77
83
  - !ruby/object:Gem::Version
84
+ hash: 3
78
85
  segments:
79
86
  - 0
80
87
  version: "0"
81
88
  required_rubygems_version: !ruby/object:Gem::Requirement
89
+ none: false
82
90
  requirements:
83
91
  - - ">="
84
92
  - !ruby/object:Gem::Version
93
+ hash: 3
85
94
  segments:
86
95
  - 0
87
96
  version: "0"
88
97
  requirements: []
89
98
 
90
99
  rubyforge_project:
91
- rubygems_version: 1.3.6
100
+ rubygems_version: 1.3.7
92
101
  signing_key:
93
102
  specification_version: 3
94
103
  summary: A thin wrapper to use Rails Migrations in non Rails projects