leifcr-mongrations 0.1.6 → 0.1.7
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.
- checksums.yaml +4 -4
- data/.gitignore +6 -0
- data/.ruby-gemset +2 -0
- data/.ruby-version +2 -0
- data/.travis.yml +7 -0
- data/Gemfile +1 -6
- data/Gemfile.lock +34 -55
- data/README.markdown +10 -42
- data/Rakefile +21 -16
- data/leifcr-mongrations.gemspec +24 -62
- data/lib/mongrations/migrator.rb +32 -31
- data/lib/mongrations/version.rb +3 -0
- data/mongrations.sublime-project +9 -0
- data/tasks/mongo.rake +12 -6
- data/test/models/widget.rb +6 -0
- data/test/mongrations/20101125020919_fix_groupable_keys.rb +15 -0
- data/test/mongrations_test.rb +57 -4
- data/test/test_helper.rb +24 -1
- metadata +93 -25
- data/VERSION +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0115914345266895ae8292f7275f93ec366d935c
|
4
|
+
data.tar.gz: 84e23605b4f882ffd86aaa5499c1d712c4f15d47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8f8df12e4c1845f766a67ba7eeaa3de33fc661fab595e26a8f86b2bc0833624b4bbdf162b59f22aaaa8fad50e09ed963cfce7d6b35029ae363ef32be229b23d
|
7
|
+
data.tar.gz: f9cdaa4188888aceb766227b0e084401820aa02d7e48dca62f85d8b135190f5b8ee9eff944613c428b210c0bbaec699e5d870d3bbe2f6714ac3e1ae5d078e01d
|
data/.ruby-gemset
ADDED
data/.ruby-version
ADDED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,69 +1,48 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
leifcr-mongrations (0.1.7)
|
5
|
+
activemodel (~> 3.2.0)
|
6
|
+
activesupport (~> 3.2.0)
|
7
|
+
mongo_mapper (~> 0.13.0)
|
8
|
+
|
1
9
|
GEM
|
2
10
|
remote: http://rubygems.org/
|
3
11
|
specs:
|
4
|
-
activemodel (3.2.
|
5
|
-
activesupport (= 3.2.
|
12
|
+
activemodel (3.2.19)
|
13
|
+
activesupport (= 3.2.19)
|
6
14
|
builder (~> 3.0.0)
|
7
|
-
activesupport (3.2.
|
15
|
+
activesupport (3.2.19)
|
8
16
|
i18n (~> 0.6, >= 0.6.4)
|
9
17
|
multi_json (~> 1.0)
|
10
|
-
|
11
|
-
bson (1.9.2)
|
18
|
+
bson (1.10.2)
|
12
19
|
builder (3.0.4)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
oauth2
|
23
|
-
hashie (2.0.5)
|
24
|
-
highline (1.6.20)
|
25
|
-
httpauth (0.2.0)
|
26
|
-
i18n (0.6.5)
|
27
|
-
jeweler (1.8.8)
|
28
|
-
builder
|
29
|
-
bundler (~> 1.0)
|
30
|
-
git (>= 1.2.5)
|
31
|
-
github_api (= 0.10.1)
|
32
|
-
highline (>= 1.6.15)
|
33
|
-
nokogiri (= 1.5.10)
|
34
|
-
rake
|
35
|
-
rdoc
|
36
|
-
json (1.8.1)
|
37
|
-
jwt (0.1.8)
|
38
|
-
multi_json (>= 1.5)
|
39
|
-
mongo (1.9.2)
|
40
|
-
bson (~> 1.9.2)
|
41
|
-
mongo_mapper (0.12.0)
|
42
|
-
activemodel (~> 3.0)
|
43
|
-
activesupport (~> 3.0)
|
44
|
-
plucky (~> 0.5.2)
|
20
|
+
i18n (0.6.11)
|
21
|
+
mcmire-matchy (0.5.2)
|
22
|
+
mongo (1.10.2)
|
23
|
+
bson (= 1.10.2)
|
24
|
+
mongo_mapper (0.13.0)
|
25
|
+
activemodel (>= 3.0.0)
|
26
|
+
activesupport (>= 3.0)
|
27
|
+
mongo (~> 1.8)
|
28
|
+
plucky (~> 0.6.5)
|
45
29
|
multi_json (1.8.2)
|
46
|
-
|
47
|
-
multipart-post (1.2.0)
|
48
|
-
nokogiri (1.5.10)
|
49
|
-
oauth2 (0.9.2)
|
50
|
-
faraday (~> 0.8)
|
51
|
-
httpauth (~> 0.2)
|
52
|
-
jwt (~> 0.1.4)
|
53
|
-
multi_json (~> 1.0)
|
54
|
-
multi_xml (~> 0.5)
|
55
|
-
rack (~> 1.2)
|
56
|
-
plucky (0.5.2)
|
30
|
+
plucky (0.6.6)
|
57
31
|
mongo (~> 1.5)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
32
|
+
rake (10.3.2)
|
33
|
+
shoulda (3.5.0)
|
34
|
+
shoulda-context (~> 1.0, >= 1.0.1)
|
35
|
+
shoulda-matchers (>= 1.4.1, < 3.0)
|
36
|
+
shoulda-context (1.2.1)
|
37
|
+
shoulda-matchers (2.6.2)
|
38
|
+
activesupport (>= 3.0.0)
|
62
39
|
|
63
40
|
PLATFORMS
|
64
41
|
ruby
|
65
42
|
|
66
43
|
DEPENDENCIES
|
67
|
-
bundler (
|
68
|
-
|
69
|
-
|
44
|
+
bundler (~> 1.6)
|
45
|
+
leifcr-mongrations!
|
46
|
+
mcmire-matchy (~> 0.5.2)
|
47
|
+
rake
|
48
|
+
shoulda
|
data/README.markdown
CHANGED
@@ -1,56 +1,24 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
[](https://travis-ci.org/leifcr/mongrations)
|
2
|
+
|
3
|
+
# Mongrations
|
3
4
|
|
4
5
|
Mongrations aims to be similar to ActiveRecord's data migrations, except
|
5
6
|
instead of worrying about schema changes, offering a way to change data when
|
6
|
-
necessary.
|
7
|
-
|
8
|
-
Example: You decide after a few weeks of running an application that you want
|
9
|
-
to add timestamps, and want to display the created_at time for an application.
|
10
|
-
|
11
|
-
You could put a default timestamp into the model (and in this case that might
|
12
|
-
be appropriate), but you might also just want to say, "everything needs to get
|
13
|
-
a new timestamp that doesn't already have one, let's say when the US beat
|
14
|
-
Canada in hockey in the Olympics."
|
7
|
+
necessary.
|
15
8
|
|
9
|
+
## Example
|
16
10
|
|
17
|
-
|
18
|
-
=======
|
11
|
+
To generate a mongration:
|
19
12
|
|
20
|
-
|
13
|
+
`rails g mongration whatever_you_want_your_mongration_to_be`
|
21
14
|
|
22
|
-
|
23
|
-
|
24
|
-
To run it, do
|
15
|
+
Perform migrations
|
25
16
|
|
26
17
|
`rake mongo:mongrate`
|
27
18
|
|
28
|
-
Other rake tasks
|
29
|
-
|
30
|
-
|
31
|
-
Dependencies
|
32
|
-
============
|
33
|
-
|
34
|
-
You need Mongo and MongoMapper for this to be of any use.
|
35
|
-
|
36
|
-
Also, this has only been tested on Rails 3.2.3.
|
37
|
-
|
38
|
-
Disclaimer
|
39
|
-
==========
|
40
|
-
|
41
|
-
*This is not ready for production*
|
42
|
-
|
43
|
-
I just adapted this, at 10:30PM, half watching the Olympics. I'm not responsible
|
44
|
-
for any damage to your data, your mongodb, your bongos, your cat, your wife, or
|
45
|
-
your kids as a result of installing this plugin.
|
19
|
+
Other rake tasks `mongo:mongrate:redo`, `mongo:mongrate:up`, `mongo:mongrate:down`, `mongo:mongrate:rollback`, `mongo:mongrate:version`.
|
46
20
|
|
47
|
-
Give it a few days. Please report bugs.
|
48
21
|
|
49
|
-
|
50
|
-
======
|
51
|
-
Original code is from Rails 2.3.5 and ActiveRecord 2.3.5, now adapted to work
|
52
|
-
with MongoMapper.
|
22
|
+
## License
|
53
23
|
|
54
|
-
License
|
55
|
-
=======
|
56
24
|
Released under the MIT license
|
data/Rakefile
CHANGED
@@ -1,20 +1,25 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'rake'
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
3
4
|
require 'rake/testtask'
|
5
|
+
# require 'rake/rdoctask'
|
6
|
+
|
7
|
+
desc 'Default: run unit tests.'
|
8
|
+
task :default => :test
|
4
9
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
instead of worrying about schema changes, offering a way to change data when
|
12
|
-
necessary}
|
13
|
-
gem.email = "leifcr@gmail.com"
|
14
|
-
gem.homepage = "http://github.com/leifcr/mongrations"
|
15
|
-
gem.authors = ["jonbell", "leifcr"]
|
16
|
-
end
|
17
|
-
Jeweler::GemcutterTasks.new
|
18
|
-
rescue LoadError
|
19
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
10
|
+
desc 'Test the mongrations plugin.'
|
11
|
+
Rake::TestTask.new(:test) do |t|
|
12
|
+
t.libs << 'lib'
|
13
|
+
t.libs << 'test'
|
14
|
+
t.pattern = 'test/**/*_test.rb'
|
15
|
+
t.verbose = true
|
20
16
|
end
|
17
|
+
|
18
|
+
# desc 'Generate documentation for the mongrations plugin.'
|
19
|
+
# Rake::RDocTask.new(:rdoc) do |rdoc|
|
20
|
+
# rdoc.rdoc_dir = 'rdoc'
|
21
|
+
# rdoc.title = 'Mongrations'
|
22
|
+
# rdoc.options << '--line-numbers' << '--inline-source'
|
23
|
+
# rdoc.rdoc_files.include('README')
|
24
|
+
# rdoc.rdoc_files.include('lib/**/*.rb')
|
25
|
+
# end
|
data/leifcr-mongrations.gemspec
CHANGED
@@ -1,66 +1,28 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
# stub: leifcr-mongrations 0.1.6 ruby lib
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'mongrations/version'
|
6
5
|
|
7
|
-
Gem::Specification.new do |
|
8
|
-
|
9
|
-
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "leifcr-mongrations"
|
8
|
+
spec.version = Mongrations::VERSION
|
9
|
+
spec.authors = ["jonbell", "Leif Ringstad"]
|
10
|
+
spec.email = ["leifcr@gmail.com"]
|
11
|
+
spec.summary = "Data migrating for MongoMapper"
|
12
|
+
spec.description = "Mongrations aims to be similar to ActiveRecord's data migrations, except\ninstead of worrying about schema changes, offering a way to change data when\nnecessary"
|
13
|
+
spec.homepage = "http://github.com/leifcr/mongrations"
|
14
|
+
spec.license = "MIT"
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
s.email = "leifcr@gmail.com"
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"README.markdown"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
"Gemfile",
|
21
|
-
"Gemfile.lock",
|
22
|
-
"MIT-LICENSE",
|
23
|
-
"README.markdown",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"generators/mongrations/templates/mongration.rb",
|
27
|
-
"generators/mongrations_generator.rb",
|
28
|
-
"init.rb",
|
29
|
-
"install.rb",
|
30
|
-
"leifcr-mongrations.gemspec",
|
31
|
-
"lib/mongrations.rb",
|
32
|
-
"lib/mongrations/exceptions.rb",
|
33
|
-
"lib/mongrations/migration_proxy.rb",
|
34
|
-
"lib/mongrations/migrator.rb",
|
35
|
-
"lib/mongrations/mongration.rb",
|
36
|
-
"lib/mongrations/railtie.rb",
|
37
|
-
"lib/mongrations/schema_migration.rb",
|
38
|
-
"tasks/mongo.rake",
|
39
|
-
"test/mongrations_test.rb",
|
40
|
-
"test/test_helper.rb",
|
41
|
-
"uninstall.rb"
|
42
|
-
]
|
43
|
-
s.homepage = "http://github.com/leifcr/mongrations"
|
44
|
-
s.require_paths = ["lib"]
|
45
|
-
s.rubygems_version = "2.1.4"
|
46
|
-
s.summary = "Data migrating for MongoMapper"
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
47
20
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
else
|
56
|
-
s.add_dependency(%q<mongo_mapper>, [">= 0.12.0"])
|
57
|
-
s.add_dependency(%q<bundler>, [">= 1.3.5"])
|
58
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.8"])
|
59
|
-
end
|
60
|
-
else
|
61
|
-
s.add_dependency(%q<mongo_mapper>, [">= 0.12.0"])
|
62
|
-
s.add_dependency(%q<bundler>, [">= 1.3.5"])
|
63
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.8"])
|
64
|
-
end
|
21
|
+
spec.add_runtime_dependency "mongo_mapper", "~> 0.13.0"
|
22
|
+
spec.add_runtime_dependency "activemodel", "~> 3.2.0"
|
23
|
+
spec.add_runtime_dependency "activesupport", "~> 3.2.0"
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
25
|
+
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "shoulda"
|
27
|
+
spec.add_development_dependency 'mcmire-matchy', '~> 0.5.2'
|
65
28
|
end
|
66
|
-
|
data/lib/mongrations/migrator.rb
CHANGED
@@ -3,18 +3,21 @@ module Mongrations
|
|
3
3
|
class << self
|
4
4
|
def migrate(migrations_path, target_version = nil)
|
5
5
|
case
|
6
|
-
when target_version.nil?
|
7
|
-
|
8
|
-
|
6
|
+
when target_version.nil? then
|
7
|
+
up(migrations_path, target_version)
|
8
|
+
when current_version > target_version then
|
9
|
+
down(migrations_path, target_version)
|
10
|
+
else
|
11
|
+
up(migrations_path, target_version)
|
9
12
|
end
|
10
13
|
end
|
11
14
|
|
12
15
|
def rollback(migrations_path, steps=1)
|
13
|
-
migrator
|
16
|
+
migrator = self.new(:down, migrations_path)
|
14
17
|
start_index = migrator.migrations.index(migrator.current_migration)
|
15
|
-
|
18
|
+
|
16
19
|
return unless start_index
|
17
|
-
|
20
|
+
|
18
21
|
finish = migrator.migrations[start_index + steps]
|
19
22
|
down(migrations_path, finish ? finish.version : 0)
|
20
23
|
end
|
@@ -26,7 +29,7 @@ module Mongrations
|
|
26
29
|
def down(migrations_path, target_version = nil)
|
27
30
|
self.new(:down, migrations_path, target_version).migrate
|
28
31
|
end
|
29
|
-
|
32
|
+
|
30
33
|
def run(direction, migrations_path, target_version)
|
31
34
|
self.new(direction, migrations_path, target_version).run
|
32
35
|
end
|
@@ -41,22 +44,23 @@ module Mongrations
|
|
41
44
|
|
42
45
|
def proper_table_name(name)
|
43
46
|
# Use the Active Record objects own table_name, or pre/suffix from MongoMapper::Base if name is a symbol/string
|
44
|
-
name.table_name rescue
|
47
|
+
name.table_name rescue name.to_s
|
45
48
|
end
|
46
49
|
end
|
47
50
|
|
48
51
|
def initialize(direction, migrations_path, target_version = nil)
|
49
|
-
|
52
|
+
target_version = target_version.to_i unless target_version.nil?
|
53
|
+
@direction, @migrations_path, @target_version = direction, migrations_path, target_version
|
50
54
|
end
|
51
55
|
|
52
56
|
def current_version
|
53
57
|
migrated.last || 0
|
54
58
|
end
|
55
|
-
|
59
|
+
|
56
60
|
def current_migration
|
57
61
|
migrations.detect { |m| m.version == current_version }
|
58
62
|
end
|
59
|
-
|
63
|
+
|
60
64
|
def run
|
61
65
|
target = migrations.detect { |m| m.version == @target_version }
|
62
66
|
raise UnknownMigrationVersionError.new(@target_version) if target.nil?
|
@@ -68,19 +72,19 @@ module Mongrations
|
|
68
72
|
|
69
73
|
def migrate
|
70
74
|
current = migrations.detect { |m| m.version == current_version }
|
71
|
-
target
|
75
|
+
target = migrations.detect { |m| m.version == @target_version }
|
72
76
|
|
73
77
|
if target.nil? && !@target_version.nil? && @target_version > 0
|
74
78
|
raise UnknownMigrationVersionError.new(@target_version)
|
75
79
|
end
|
76
|
-
|
77
|
-
start
|
78
|
-
finish
|
80
|
+
|
81
|
+
start = up? ? 0 : (migrations.index(current) || 0)
|
82
|
+
finish = migrations.index(target) || migrations.size - 1
|
79
83
|
runnable = migrations[start..finish]
|
80
|
-
|
84
|
+
|
81
85
|
# skip the last migration if we're headed down, but not ALL the way down
|
82
86
|
runnable.pop if down? && !target.nil?
|
83
|
-
|
87
|
+
|
84
88
|
runnable.each do |migration|
|
85
89
|
# On our way up, we skip migrating the ones we've already migrated
|
86
90
|
next if up? && migrated.include?(migration.version.to_i)
|
@@ -98,29 +102,29 @@ module Mongrations
|
|
98
102
|
|
99
103
|
def migrations
|
100
104
|
@migrations ||= begin
|
101
|
-
files
|
102
|
-
|
105
|
+
files = Dir["#{@migrations_path}/[0-9]*_*.rb"]
|
106
|
+
|
103
107
|
migrations = files.inject([]) do |klasses, file|
|
104
108
|
version, name = file.scan(/([0-9]+)_([_a-z0-9]*).rb/).first
|
105
|
-
|
109
|
+
|
106
110
|
raise IllegalMigrationNameError.new(file) unless version
|
107
111
|
version = version.to_i
|
108
|
-
|
112
|
+
|
109
113
|
if klasses.detect { |m| m.version == version }
|
110
|
-
raise DuplicateMigrationVersionError.new(version)
|
114
|
+
raise DuplicateMigrationVersionError.new(version)
|
111
115
|
end
|
112
116
|
|
113
117
|
if klasses.detect { |m| m.name == name.camelize }
|
114
|
-
raise DuplicateMigrationNameError.new(name.camelize)
|
118
|
+
raise DuplicateMigrationNameError.new(name.camelize)
|
115
119
|
end
|
116
|
-
|
120
|
+
|
117
121
|
migration = MigrationProxy.new
|
118
122
|
migration.name = name.camelize
|
119
123
|
migration.version = version
|
120
124
|
migration.filename = file
|
121
125
|
klasses << migration
|
122
126
|
end
|
123
|
-
|
127
|
+
|
124
128
|
migrations = migrations.sort_by(&:version)
|
125
129
|
down? ? migrations.reverse : migrations
|
126
130
|
end
|
@@ -157,13 +161,10 @@ module Mongrations
|
|
157
161
|
end
|
158
162
|
|
159
163
|
# Wrap the migration in a transaction only if supported by the adapter.
|
164
|
+
# (It's not.)
|
160
165
|
def ddl_transaction(&block)
|
161
|
-
|
162
|
-
Base.transaction { block.call }
|
163
|
-
else
|
164
|
-
block.call
|
165
|
-
end
|
166
|
+
block.call
|
166
167
|
end
|
167
168
|
end
|
168
|
-
|
169
|
+
|
169
170
|
end
|
data/tasks/mongo.rake
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
namespace :mongo do
|
2
|
+
@path = File.join(Rails.root, "db", "mongrations")
|
2
3
|
desc "Migrate the database through scripts in db/mongrations. Target specific version with VERSION=x."
|
3
4
|
task :mongrate => :environment do
|
4
|
-
Mongrations::Migrator.migrate(
|
5
|
+
Mongrations::Migrator.migrate(@path, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
5
6
|
end
|
6
|
-
|
7
|
+
|
7
8
|
namespace :mongrate do
|
8
9
|
desc 'Rollbacks the database one mongration and re migrate up. If you want to rollback more than one step, define STEP=x. Target specific version with VERSION=x.'
|
9
10
|
task :redo => :environment do
|
@@ -20,20 +21,25 @@ namespace :mongo do
|
|
20
21
|
task :up => :environment do
|
21
22
|
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
22
23
|
raise "VERSION is required" unless version
|
23
|
-
Mongrations::Migrator.run(:up,
|
24
|
+
Mongrations::Migrator.run(:up, @path, version)
|
24
25
|
end
|
25
26
|
|
26
27
|
desc 'Runs the "down" for a given mongration VERSION.'
|
27
28
|
task :down => :environment do
|
28
29
|
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
29
30
|
raise "VERSION is required" unless version
|
30
|
-
Mongrations::Migrator.run(:down,
|
31
|
+
Mongrations::Migrator.run(:down, @path, version)
|
32
|
+
end
|
33
|
+
|
34
|
+
desc 'Show the current version of the mongrations'
|
35
|
+
task :version => :environment do
|
36
|
+
puts MongoMapper::Migrator.current_version
|
31
37
|
end
|
32
38
|
end
|
33
|
-
|
39
|
+
|
34
40
|
desc 'Rolls the schema back to the previous version. Specify the number of steps with STEP=n'
|
35
41
|
task :mongo_rollback => :environment do
|
36
42
|
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
|
37
|
-
Mongrations::Migrator.rollback(
|
43
|
+
Mongrations::Migrator.rollback(@path, step)
|
38
44
|
end
|
39
45
|
end
|
data/test/mongrations_test.rb
CHANGED
@@ -1,8 +1,61 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class MongrationsTest < ActiveSupport::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
context "A valid MongoMapper connection" do
|
5
|
+
setup do
|
6
|
+
@path = File.join("test", "mongrations")
|
7
|
+
@version = "20101125020919"
|
8
|
+
end
|
9
|
+
|
10
|
+
context "with a valid database" do
|
11
|
+
context "with a pending migration" do
|
12
|
+
should "migrate up to a given version" do
|
13
|
+
Widget.create(:name => "Sparkling Wizzles", :price => 100)
|
14
|
+
Widget.first.price.should == 100
|
15
|
+
Mongrations::Migrator.run(:up, @path, @version)
|
16
|
+
Widget.first.price.should == 200
|
17
|
+
end
|
18
|
+
|
19
|
+
should "run all pending migrations" do
|
20
|
+
|
21
|
+
Widget.create(:name => "Sparkling Wizzles", :price => 100)
|
22
|
+
Widget.first.price.should == 100
|
23
|
+
Mongrations::Migrator.migrate(@path, nil)
|
24
|
+
Widget.first.price.should == 200
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
should "run a migration:down" do
|
29
|
+
Widget.create(:name => "Sparkling Wizzles", :price => 100)
|
30
|
+
Widget.first.price.should == 100
|
31
|
+
Mongrations::Migrator.migrate(@path, nil)
|
32
|
+
Widget.first.price.should == 200
|
33
|
+
Mongrations::Migrator.run(:down, @path, @version)
|
34
|
+
Widget.first.price.should == 100
|
35
|
+
end
|
36
|
+
|
37
|
+
should "run a migration rollback" do
|
38
|
+
Widget.create(:name => "Sparkling Wizzles", :price => 100)
|
39
|
+
Widget.first.price.should == 100
|
40
|
+
Mongrations::Migrator.migrate(@path, nil)
|
41
|
+
Widget.first.price.should == 200
|
42
|
+
Mongrations::Migrator.rollback(@path, 1)
|
43
|
+
Widget.first.price.should == 100
|
44
|
+
end
|
45
|
+
|
46
|
+
should "not run a migration more than once" do
|
47
|
+
Widget.create(:name => "Sparkling Wizzles", :price => 100)
|
48
|
+
Widget.first.price.should == 100
|
49
|
+
Mongrations::Migrator.migrate(@path, nil)
|
50
|
+
Widget.first.price.should == 200
|
51
|
+
Mongrations::Migrator.migrate(@path, nil)
|
52
|
+
Widget.first.price.should == 200
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
teardown do
|
57
|
+
# Not gonna remove it. For now.
|
58
|
+
# MongoMapper.connection.drop_database "mongrations_test"
|
59
|
+
end
|
7
60
|
end
|
8
|
-
end
|
61
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
1
4
|
require 'rubygems'
|
2
5
|
require 'active_support'
|
3
|
-
require 'active_support/test_case'
|
6
|
+
require 'active_support/test_case'
|
7
|
+
require 'shoulda'
|
8
|
+
require 'matchy'
|
9
|
+
require 'mongo_mapper'
|
10
|
+
require 'models/widget'
|
11
|
+
require 'mongrations'
|
12
|
+
|
13
|
+
MongoMapper.connection = Mongo::Connection.new('127.0.0.1', 27017)
|
14
|
+
MongoMapper.database = "mongrations-test"
|
15
|
+
|
16
|
+
class ActiveSupport::TestCase
|
17
|
+
def teardown
|
18
|
+
MongoMapper.connection.drop_database "mongrations-test"
|
19
|
+
end
|
20
|
+
|
21
|
+
def inherited(base)
|
22
|
+
base.define_method teardown do
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,74 +1,133 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leifcr-mongrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jonbell
|
8
|
-
-
|
8
|
+
- Leif Ringstad
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-08-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongo_mapper
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.13.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.
|
27
|
+
version: 0.13.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: activemodel
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 3.2.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 3.2.0
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: activesupport
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 3.2.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 3.2.0
|
28
56
|
- !ruby/object:Gem::Dependency
|
29
57
|
name: bundler
|
30
58
|
requirement: !ruby/object:Gem::Requirement
|
31
59
|
requirements:
|
32
|
-
- -
|
60
|
+
- - "~>"
|
33
61
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
62
|
+
version: '1.6'
|
35
63
|
type: :development
|
36
64
|
prerelease: false
|
37
65
|
version_requirements: !ruby/object:Gem::Requirement
|
38
66
|
requirements:
|
39
|
-
- -
|
67
|
+
- - "~>"
|
40
68
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
69
|
+
version: '1.6'
|
42
70
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
71
|
+
name: rake
|
44
72
|
requirement: !ruby/object:Gem::Requirement
|
45
73
|
requirements:
|
46
|
-
- -
|
74
|
+
- - ">="
|
47
75
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
76
|
+
version: '0'
|
49
77
|
type: :development
|
50
78
|
prerelease: false
|
51
79
|
version_requirements: !ruby/object:Gem::Requirement
|
52
80
|
requirements:
|
53
|
-
- -
|
81
|
+
- - ">="
|
54
82
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: shoulda
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: mcmire-matchy
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 0.5.2
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 0.5.2
|
56
112
|
description: |-
|
57
113
|
Mongrations aims to be similar to ActiveRecord's data migrations, except
|
58
114
|
instead of worrying about schema changes, offering a way to change data when
|
59
115
|
necessary
|
60
|
-
email:
|
116
|
+
email:
|
117
|
+
- leifcr@gmail.com
|
61
118
|
executables: []
|
62
119
|
extensions: []
|
63
|
-
extra_rdoc_files:
|
64
|
-
- README.markdown
|
120
|
+
extra_rdoc_files: []
|
65
121
|
files:
|
122
|
+
- ".gitignore"
|
123
|
+
- ".ruby-gemset"
|
124
|
+
- ".ruby-version"
|
125
|
+
- ".travis.yml"
|
66
126
|
- Gemfile
|
67
127
|
- Gemfile.lock
|
68
128
|
- MIT-LICENSE
|
69
129
|
- README.markdown
|
70
130
|
- Rakefile
|
71
|
-
- VERSION
|
72
131
|
- generators/mongrations/templates/mongration.rb
|
73
132
|
- generators/mongrations_generator.rb
|
74
133
|
- init.rb
|
@@ -81,12 +140,17 @@ files:
|
|
81
140
|
- lib/mongrations/mongration.rb
|
82
141
|
- lib/mongrations/railtie.rb
|
83
142
|
- lib/mongrations/schema_migration.rb
|
143
|
+
- lib/mongrations/version.rb
|
144
|
+
- mongrations.sublime-project
|
84
145
|
- tasks/mongo.rake
|
146
|
+
- test/models/widget.rb
|
147
|
+
- test/mongrations/20101125020919_fix_groupable_keys.rb
|
85
148
|
- test/mongrations_test.rb
|
86
149
|
- test/test_helper.rb
|
87
150
|
- uninstall.rb
|
88
151
|
homepage: http://github.com/leifcr/mongrations
|
89
|
-
licenses:
|
152
|
+
licenses:
|
153
|
+
- MIT
|
90
154
|
metadata: {}
|
91
155
|
post_install_message:
|
92
156
|
rdoc_options: []
|
@@ -94,18 +158,22 @@ require_paths:
|
|
94
158
|
- lib
|
95
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
96
160
|
requirements:
|
97
|
-
- -
|
161
|
+
- - ">="
|
98
162
|
- !ruby/object:Gem::Version
|
99
163
|
version: '0'
|
100
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
165
|
requirements:
|
102
|
-
- -
|
166
|
+
- - ">="
|
103
167
|
- !ruby/object:Gem::Version
|
104
168
|
version: '0'
|
105
169
|
requirements: []
|
106
170
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
171
|
+
rubygems_version: 2.2.2
|
108
172
|
signing_key:
|
109
173
|
specification_version: 4
|
110
174
|
summary: Data migrating for MongoMapper
|
111
|
-
test_files:
|
175
|
+
test_files:
|
176
|
+
- test/models/widget.rb
|
177
|
+
- test/mongrations/20101125020919_fix_groupable_keys.rb
|
178
|
+
- test/mongrations_test.rb
|
179
|
+
- test/test_helper.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.6
|