cairn 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,371 @@
1
+ require 'spec_helper'
2
+ describe 'Standalone migrations' do
3
+
4
+ def write(file, content)
5
+ raise "cannot write nil" unless file
6
+ file = tmp_file(file)
7
+ folder = File.dirname(file)
8
+ `mkdir -p #{folder}` unless File.exist?(folder)
9
+ File.open(file, 'w') { |f| f.write content }
10
+ end
11
+
12
+ def read(file)
13
+ File.read(tmp_file(file))
14
+ end
15
+
16
+ def migration(name)
17
+ m = `cd spec/tmp/db/migrate && ls`.split("\n").detect { |m| m =~ /#{name}/ }
18
+ m ? "db/migrate/#{m}" : m
19
+ end
20
+
21
+ def tmp_file(file)
22
+ "spec/tmp/#{file}"
23
+ end
24
+
25
+ def schema
26
+ ENV['SCHEMA']
27
+ end
28
+
29
+ def run(cmd)
30
+ result = `cd spec/tmp && #{cmd} 2>&1`
31
+ raise result unless $?.success?
32
+ result
33
+ end
34
+
35
+ def make_migration(name, options={})
36
+ task_name = options[:task_name] || 'db:new_migration'
37
+ migration = run("rake #{task_name} name=#{name}").match(%r{db/migrate/\d+.*.rb})[0]
38
+ content = read(migration)
39
+ content.sub!(/def down.*?\send/m, "def down;puts 'DOWN-#{name}';end")
40
+ content.sub!(/def up.*?\send/m, "def up;puts 'UP-#{name}';end")
41
+ write(migration, content)
42
+ migration.match(/\d{14}/)[0]
43
+ end
44
+
45
+ def write_rakefile(config=nil)
46
+ write 'Rakefile', <<-TXT
47
+ $LOAD_PATH.unshift '#{File.expand_path('lib')}'
48
+ begin
49
+ require "standalone_migrations"
50
+ StandaloneMigrations::Tasks.load_tasks
51
+ rescue LoadError => e
52
+ puts "gem install standalone_migrations to get db:migrate:* tasks! (Error: \#{e})"
53
+ end
54
+ TXT
55
+ end
56
+
57
+ def write_multiple_migrations
58
+ migration_superclass = if Rails::VERSION::MAJOR >= 5
59
+ "ActiveRecord::Migration[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
60
+ else
61
+ "ActiveRecord::Migration"
62
+ end
63
+
64
+ write_rakefile %{t.migrations = "db/migrations", "db/migrations2"}
65
+ write "db/migrate/20100509095815_create_tests.rb", <<-TXT
66
+ class CreateTests < #{migration_superclass}
67
+ def up
68
+ puts "UP-CreateTests"
69
+ end
70
+
71
+ def down
72
+ puts "DOWN-CreateTests"
73
+ end
74
+ end
75
+ TXT
76
+ write "db/migrate/20100509095816_create_tests2.rb", <<-TXT
77
+ class CreateTests2 < #{migration_superclass}
78
+ def up
79
+ puts "UP-CreateTests2"
80
+ end
81
+
82
+ def down
83
+ puts "DOWN-CreateTests2"
84
+ end
85
+ end
86
+ TXT
87
+ end
88
+
89
+ before do
90
+ StandaloneMigrations::Configurator.instance_variable_set(:@env_config, nil)
91
+ `rm -rf spec/tmp` if File.exist?('spec/tmp')
92
+ `mkdir spec/tmp`
93
+ write_rakefile
94
+ write(schema, '')
95
+ write 'db/config.yml', <<-TXT
96
+ development:
97
+ adapter: sqlite3
98
+ database: db/development.sql
99
+ test:
100
+ adapter: sqlite3
101
+ database: db/test.sql
102
+ production:
103
+ adapter: sqlite3
104
+ database: db/production.sql
105
+ TXT
106
+ end
107
+
108
+ after(:all) do
109
+ `rm -rf spec/tmp` if File.exist?('spec/tmp')
110
+ end
111
+
112
+ it "warns of deprecated folder structure" do
113
+ warning = /DEPRECATED.* db\/migrate/
114
+ expect(run("rake db:create")).not_to match(warning)
115
+ write('db/migrations/fooo.rb', 'xxx')
116
+ expect(run("rake db:create --trace")).to match(warning)
117
+ end
118
+
119
+ describe 'db:create and drop' do
120
+ it "should create the database and drop the database that was created" do
121
+ run "rake db:create"
122
+ run "rake db:drop"
123
+ end
124
+ end
125
+
126
+ describe 'callbacks' do
127
+ it 'runs the callbacks' do
128
+ expect(StandaloneMigrations::Tasks).to receive(:configure).and_call_original
129
+
130
+ connection_established = false
131
+ expect(ActiveRecord::Base).to receive(:establish_connection) do
132
+ connection_established = true
133
+ end
134
+ expect(StandaloneMigrations).to receive(:run_on_load_callbacks) do
135
+ expect(connection_established).to be true
136
+ end
137
+
138
+ Dir.chdir(File.join(File.dirname(__FILE__), "tmp")) do
139
+ load "Rakefile"
140
+ Rake::Task['standalone:connection'].invoke
141
+ end
142
+ end
143
+ end
144
+
145
+ describe 'db:new_migration' do
146
+ it "fails if i do not add a name" do
147
+ expect(lambda{ run("rake db:new_migration") }).to raise_error(/name=/)
148
+ end
149
+
150
+ it "generates a new migration with this name from ENV and timestamp" do
151
+ expect(run("rake db:new_migration name=test_abc_env")).to match(%r{create(.*)db/migrate/\d+_test_abc_env\.rb})
152
+ expect(run("ls db/migrate")).to match(/^\d+_test_abc_env.rb$/)
153
+ end
154
+
155
+ it "generates a new migration with this name from args and timestamp" do
156
+ expect(run("rake db:new_migration[test_abc_args]")).to match(%r{create(.*)db/migrate/\d+_test_abc_args\.rb})
157
+ expect(run("ls db/migrate")).to match(/^\d+_test_abc_args.rb$/)
158
+ end
159
+
160
+ it "generates a new migration with the name converted to the Rails migration format" do
161
+ expect(run("rake db:new_migration name=MyNiceModel")).to match(%r{create(.*)db/migrate/\d+_my_nice_model\.rb})
162
+ expect(read(migration('my_nice_model'))).to match(/class MyNiceModel/)
163
+ expect(run("ls db/migrate")).to match(/^\d+_my_nice_model.rb$/)
164
+ end
165
+
166
+ it "generates a new migration with name and options from ENV" do
167
+ run("rake db:new_migration name=add_name_and_email_to_users options='name:string email:string'")
168
+ expect(read(migration('add_name_and_email_to_users'))).to match(/add_column :users, :name, :string\n\s*add_column :users, :email, :string/)
169
+ end
170
+
171
+ it "generates a new migration with name and options from args" do
172
+ run("rake db:new_migration[add_website_and_username_to_users,website:string/username:string]")
173
+ expect(read(migration('add_website_and_username_to_users'))).to match(/add_column :users, :website, :string\n\s*add_column :users, :username, :string/)
174
+ end
175
+ end
176
+
177
+ describe 'db:version' do
178
+ it "should start with a new database version" do
179
+ expect(run("rake db:version")).to match(/Current version: 0/)
180
+ end
181
+
182
+ it "should display the current version" do
183
+ run("rake db:new_migration name=test_abc")
184
+ run("rake --trace db:migrate")
185
+ expect(run("rake db:version")).to match(/Current version: #{Time.now.year}/)
186
+ end
187
+ end
188
+
189
+ describe 'db:migrate' do
190
+ it "does nothing when no migrations are present" do
191
+ expect(run("rake db:migrate")).not_to match(/Migrating/)
192
+ end
193
+
194
+ it "migrates if i add a migration" do
195
+ run("rake db:new_migration name=xxx")
196
+ expect(run("rake db:migrate")).to match(/Xxx: Migrating/i)
197
+ end
198
+ end
199
+
200
+ describe 'db:migrate:down' do
201
+ it "migrates down" do
202
+ make_migration('xxx')
203
+ sleep 1
204
+ version = make_migration('yyy')
205
+ run 'rake db:migrate'
206
+
207
+ result = run("rake db:migrate:down VERSION=#{version}")
208
+ expect(result).not_to match(/Xxx: reverting/)
209
+ expect(result).to match(/Yyy: reverting/)
210
+ end
211
+
212
+ it "fails without version" do
213
+ make_migration('yyy')
214
+ # Rails has a bug where it's sending a bad failure exception
215
+ # https://github.com/rails/rails/issues/28905
216
+ expect(lambda{ run("rake db:migrate:down") }).to raise_error(/VERSION|version/)
217
+ end
218
+ end
219
+
220
+ describe 'db:migrate:up' do
221
+ it "migrates up" do
222
+ make_migration('xxx')
223
+ run 'rake db:migrate'
224
+ sleep 1
225
+ version = make_migration('yyy')
226
+ result = run("rake db:migrate:up VERSION=#{version}")
227
+ expect(result).not_to match(/Xxx: migrating/)
228
+ expect(result).to match(/Yyy: migrating/)
229
+ end
230
+
231
+ it "fails without version" do
232
+ make_migration('yyy')
233
+ # Rails has a bug where it's sending a bad failure exception
234
+ # https://github.com/rails/rails/issues/28905
235
+ expect(lambda{ run("rake db:migrate:up") }).to raise_error(/VERSION|version/)
236
+ end
237
+ end
238
+
239
+ describe 'db:rollback' do
240
+ it "does nothing when no migrations have been run" do
241
+ expect(run("rake db:version")).to match(/version: 0/)
242
+ expect(run("rake db:rollback")).to eq('')
243
+ expect(run("rake db:version")).to match(/version: 0/)
244
+ end
245
+
246
+ it "rolls back the last migration if one has been applied" do
247
+ write_multiple_migrations
248
+ run("rake db:migrate")
249
+ expect(run("rake db:version")).to match(/version: 20100509095816/)
250
+ expect(run("rake db:rollback")).to match(/revert/)
251
+ expect(run("rake db:version")).to match(/version: 20100509095815/)
252
+ end
253
+
254
+ it "rolls back multiple migrations if the STEP argument is given" do
255
+ write_multiple_migrations
256
+ run("rake db:migrate")
257
+ expect(run("rake db:version")).to match(/version: 20100509095816/)
258
+ run("rake db:rollback STEP=2") =~ /revert/
259
+ expect(run("rake db:version")).to match(/version: 0/)
260
+ end
261
+ end
262
+
263
+ describe 'schema:dump' do
264
+ it "dumps the schema" do
265
+ write(schema, '')
266
+ run('rake db:schema:dump')
267
+ expect(read(schema)).to match(/ActiveRecord/)
268
+ end
269
+ end
270
+
271
+ describe 'db:schema:load' do
272
+ it "loads the schema" do
273
+ run('rake db:schema:dump')
274
+ write(schema, read(schema)+"\nputs 'LOADEDDD'")
275
+ result = run('rake db:schema:load')
276
+ expect(result).to match(/LOADEDDD/)
277
+ end
278
+
279
+ it "loads all migrations" do
280
+ make_migration('yyy')
281
+ run "rake db:migrate"
282
+ run "rake db:drop"
283
+ run "rake db:create"
284
+ run "rake db:schema:load"
285
+ expect(run( "rake db:migrate").strip).to eq('')
286
+ end
287
+ end
288
+
289
+ describe 'db:abort_if_pending_migrations' do
290
+ it "passes when no migrations are pending" do
291
+ expect(run("rake db:abort_if_pending_migrations").strip).to eq('')
292
+ end
293
+
294
+ it "fails when migrations are pending" do
295
+ make_migration('yyy')
296
+ expect(lambda{ run("rake db:abort_if_pending_migrations") }).to raise_error(/1 pending migration/)
297
+ end
298
+ end
299
+
300
+ describe 'db:test:load' do
301
+ it 'loads' do
302
+ write(schema, "puts 'LOADEDDD'")
303
+ expect(run("rake db:test:load")).to match(/LOADEDDD/)
304
+ end
305
+
306
+ it "fails without schema" do
307
+ schema_path = "spec/tmp/#{schema}"
308
+ `rm -rf #{schema_path}` if File.exist?(schema_path)
309
+ expect(lambda{ run("rake db:test:load") }).to raise_error(/try again/)
310
+ end
311
+ end
312
+
313
+ describe 'db:test:purge' do
314
+ it "runs" do
315
+ run('rake db:test:purge')
316
+ end
317
+ end
318
+
319
+ describe "db:seed" do
320
+ it "loads" do
321
+ write("db/seeds.rb", "puts 'LOADEDDD'")
322
+ expect(run("rake db:seed")).to match(/LOADEDDD/)
323
+ end
324
+
325
+ describe 'with non-default seed file' do
326
+ let(:yaml_hash) do
327
+ {
328
+ "db" => {
329
+ "seeds" => "db/seeds2.rb",
330
+ }
331
+ }
332
+ end
333
+
334
+ before do
335
+ write(".standalone_migrations", yaml_hash.to_yaml)
336
+ end
337
+
338
+
339
+ it "loads" do
340
+ write("db/seeds2.rb", "puts 'LOADEDDD'")
341
+ expect(run("rake db:seed")).to match(/LOADEDDD/)
342
+ end
343
+ end
344
+
345
+
346
+ it "does nothing without seeds" do
347
+ expect(run("rake db:seed").length).to eq(0)
348
+ end
349
+ end
350
+
351
+ describe "db:reset" do
352
+ it "should not error when a seeds file does not exist" do
353
+ make_migration('yyy')
354
+ run('rake db:migrate DB=test')
355
+ expect(lambda{ run("rake db:reset") }).not_to raise_error
356
+ end
357
+ end
358
+
359
+ describe 'db:migrate when environment is specified' do
360
+ it "runs when using the DB environment variable", :travis_error => true do
361
+ make_migration('yyy')
362
+ run('rake db:migrate RAILS_ENV=test')
363
+ expect(run('rake db:version RAILS_ENV=test')).not_to match(/version: 0/)
364
+ expect(run('rake db:version')).to match(/version: 0/)
365
+ end
366
+
367
+ it "should error on an invalid database", :travis_error => true do
368
+ expect(lambda{ run("rake db:create RAILS_ENV=nonexistent")}).to raise_error(/rake aborted/)
369
+ end
370
+ end
371
+ end
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Jesús García Sáez
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,92 @@
1
+
2
+ DESCRIPTION
3
+ ===========
4
+
5
+ Helpers for migrations of ActiveRecord for dealing with foreign keys and primary keys.
6
+
7
+ FEATURES
8
+ ========
9
+
10
+ * **foreign keys**
11
+ * foreign_key(table, field, referenced_table, referenced_field, on_cascade)
12
+ * drop_foreign_key(table, field)
13
+ * **primary keys**
14
+ * primary_key(table, field)
15
+
16
+ Examples
17
+ ========
18
+
19
+ Typical use:
20
+
21
+ def self.up
22
+ create_table :profiles do |t|
23
+ t.string :first_name
24
+ t.string :last_name
25
+ t.string :email
26
+ t.boolean :is_disabled
27
+ end
28
+ create_table :users do |t|
29
+ t.string :login
30
+ t.string :crypted_password
31
+ t.string :salt
32
+ t.integer :profile_id
33
+ end
34
+
35
+ foreign_key :users, :profile_id, :profiles
36
+ end
37
+
38
+ def self.down
39
+ drop_foreign_key :users, :profile_id
40
+ drop_table :users
41
+ drop_table :profiles
42
+ end
43
+
44
+
45
+ Also, if we don't defined a common :id (exactly it's rails who define it), we should create a primary key:
46
+
47
+ def self.up
48
+ create_table :foo, :id => false do |t|
49
+ t.string :foo, :bar
50
+ end
51
+
52
+ primary_key :foo, [ :foo, :bar ]
53
+ end
54
+
55
+ In the parameter where a field is required (like the second parameter in *primary_key*) you can specified and symbol (or string) or an array of symbols (or strings).
56
+
57
+
58
+ REQUIREMENTS
59
+ ============
60
+
61
+ * It's been tested with Mysql adapter and Jdbcmysql adapter
62
+
63
+ INSTALL
64
+ =======
65
+
66
+ * script/plugin install git://github.com/blaxter/migration_helpers.git
67
+
68
+ LICENSE
69
+ =======
70
+
71
+ (The MIT License)
72
+
73
+ Copyright (c) 2008 Jesús García Sáez <jgarcia@warp.es>
74
+
75
+ Permission is hereby granted, free of charge, to any person obtaining
76
+ a copy of this software and associated documentation files (the
77
+ 'Software'), to deal in the Software without restriction, including
78
+ without limitation the rights to use, copy, modify, merge, publish,
79
+ distribute, sublicense, and/or sell copies of the Software, and to
80
+ permit persons to whom the Software is furnished to do so, subject to
81
+ the following conditions:
82
+
83
+ The above copyright notice and this permission notice shall be
84
+ included in all copies or substantial portions of the Software.
85
+
86
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
87
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
88
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
89
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
90
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
91
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
92
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,4 @@
1
+ require 'migration_helper'
2
+
3
+ ActiveRecord::ConnectionAdapters::AbstractAdapter.
4
+ send :include, MigrationConstraintHelpers
@@ -0,0 +1,51 @@
1
+ module MigrationConstraintHelpers
2
+
3
+ # Creates a foreign key from +table+.+field+ against referenced_table.referenced_field
4
+ #
5
+ # table: The tablename
6
+ # field: A field of the table
7
+ # referenced_table: The table which contains the field referenced
8
+ # referenced_field: The field (which should be part of the primary key) of the referenced table
9
+ # cascade: delete & update on cascade?
10
+ def foreign_key(table, field, referenced_table, referenced_field = :id, cascade = true)
11
+ execute "ALTER TABLE #{table} ADD CONSTRAINT #{constraint_name(table, field)}
12
+ FOREIGN KEY #{constraint_name(table, field)} (#{field_list(field)})
13
+ REFERENCES #{referenced_table}(#{field_list(referenced_field)})
14
+ #{(cascade ? 'ON DELETE CASCADE ON UPDATE CASCADE' : '')}"
15
+ end
16
+
17
+ # Drops a foreign key from +table+.+field+ that has been created before with
18
+ # foreign_key method
19
+ #
20
+ # table: The table name
21
+ # field: A field (or array of fields) of the table
22
+ def drop_foreign_key(table, field)
23
+ execute "ALTER TABLE #{table} DROP FOREIGN KEY #{constraint_name(table, field)}"
24
+ end
25
+
26
+ # Creates a primary key for +table+, which right now HAS NOT primary key defined
27
+ #
28
+ # table: The table name
29
+ # field: A field (or array of fields) of the table that will be part of the primary key
30
+ def primary_key(table, field)
31
+ execute "ALTER TABLE #{table} ADD PRIMARY KEY(#{field_list(field)})"
32
+ end
33
+
34
+ private
35
+
36
+ # Creates a constraint name for table and field given as parameters
37
+ #
38
+ # table: The table name
39
+ # field: A field of the table
40
+ def constraint_name(table, field)
41
+ "fk_#{table}_#{field_list_name(field)}"
42
+ end
43
+
44
+ def field_list(fields)
45
+ fields.is_a?(Array) ? fields.join(',') : fields
46
+ end
47
+
48
+ def field_list_name(fields)
49
+ fields.is_a?(Array) ? fields.join('_') : fields
50
+ end
51
+ end
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cairn
3
+ version: !ruby/object:Gem::Version
4
+ version: 7.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Karl Oscar Weber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-08-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '10.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '10.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 4.2.7
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: 7.1.0
37
+ - - "!="
38
+ - !ruby/object:Gem::Version
39
+ version: 5.2.3
40
+ - - "!="
41
+ - !ruby/object:Gem::Version
42
+ version: 5.2.3.rc1
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 4.2.7
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: 7.1.0
53
+ - - "!="
54
+ - !ruby/object:Gem::Version
55
+ version: 5.2.3
56
+ - - "!="
57
+ - !ruby/object:Gem::Version
58
+ version: 5.2.3.rc1
59
+ - !ruby/object:Gem::Dependency
60
+ name: railties
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 4.2.7
66
+ - - "<"
67
+ - !ruby/object:Gem::Version
68
+ version: 7.1.0
69
+ - - "!="
70
+ - !ruby/object:Gem::Version
71
+ version: 5.2.3
72
+ - - "!="
73
+ - !ruby/object:Gem::Version
74
+ version: 5.2.3.rc1
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 4.2.7
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: 7.1.0
85
+ - - "!="
86
+ - !ruby/object:Gem::Version
87
+ version: 5.2.3
88
+ - - "!="
89
+ - !ruby/object:Gem::Version
90
+ version: 5.2.3.rc1
91
+ description:
92
+ email: me@kow.fm
93
+ executables: []
94
+ extensions: []
95
+ extra_rdoc_files:
96
+ - LICENSE
97
+ - README.markdown
98
+ files:
99
+ - ".rspec"
100
+ - ".travis.yml"
101
+ - Gemfile
102
+ - LICENSE
103
+ - README.markdown
104
+ - Rakefile
105
+ - VERSION
106
+ - cairn.gemspec
107
+ - example/.gitignore
108
+ - example/Rakefile
109
+ - example/db/config.yml
110
+ - example/db/migrate/20120930053225_create_table_awesome_migration.rb
111
+ - lib/standalone_migrations.rb
112
+ - lib/standalone_migrations/callbacks.rb
113
+ - lib/standalone_migrations/configurator.rb
114
+ - lib/standalone_migrations/generator.rb
115
+ - lib/standalone_migrations/minimal_railtie_config.rb
116
+ - lib/standalone_migrations/tasks.rb
117
+ - lib/standalone_migrations/tasks/connection.rake
118
+ - lib/standalone_migrations/tasks/db/new_migration.rake
119
+ - lib/standalone_migrations/tasks/environment.rake
120
+ - lib/tasks/standalone_migrations.rb
121
+ - spec/spec_helper.rb
122
+ - spec/standalone_migrations/callbacks_spec.rb
123
+ - spec/standalone_migrations/configurator_spec.rb
124
+ - spec/standalone_migrations_spec.rb
125
+ - vendor/migration_helpers/MIT-LICENSE
126
+ - vendor/migration_helpers/README.markdown
127
+ - vendor/migration_helpers/init.rb
128
+ - vendor/migration_helpers/lib/migration_helper.rb
129
+ homepage: http://github.com/karloscarweber/cairn
130
+ licenses:
131
+ - MIT
132
+ metadata: {}
133
+ post_install_message:
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ requirements: []
148
+ rubygems_version: 3.3.7
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: A thin wrapper to use Rails Migrations in non Rails projects
152
+ test_files: []