mongify 0.3 → 0.3.1
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.
- data/CHANGELOG.rdoc +4 -0
- data/Gemfile.lock +1 -1
- data/README.rdoc +15 -9
- data/lib/mongify/translation/process.rb +10 -2
- data/lib/mongify/version.rb +1 -1
- data/spec/mongify/translation/process_spec.rb +11 -0
- metadata +54 -54
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== 0.3.1 / 21 Jan 2013
|
2
|
+
* README examples updated
|
3
|
+
* README typos fixed.
|
4
|
+
* Added ability to fetch IDs of fields that have an array of ids
|
1
5
|
== 0.3 / 12 Sep 2012
|
2
6
|
* Added ability to work with :key columns that were not :integer values
|
3
7
|
* You can now specify :as value for a type :key column
|
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -19,7 +19,7 @@ Learn more about MongoDB at: http://www.mongodb.org
|
|
19
19
|
|
20
20
|
=== Creating a configuration file
|
21
21
|
|
22
|
-
In order for Mongify to do
|
22
|
+
In order for Mongify to do its job, it needs to know where your databases are located.
|
23
23
|
|
24
24
|
Building a config file is as simple as this:
|
25
25
|
|
@@ -37,28 +37,28 @@ Building a config file is as simple as this:
|
|
37
37
|
end
|
38
38
|
|
39
39
|
You can check your configuration by running
|
40
|
-
mongify check -c
|
40
|
+
mongify check -c database.config
|
41
41
|
|
42
42
|
==== Options
|
43
|
-
Currently the only option
|
43
|
+
Currently the only supported option is for the mongodb_connection.
|
44
44
|
|
45
45
|
mongodb_connection :force => true do # Forcing a mongodb_connection will drop the database before processing
|
46
46
|
# ...
|
47
47
|
end
|
48
48
|
|
49
|
-
<em>You can omit the mongodb connection
|
49
|
+
<em>You can omit the mongodb connection until you're ready to process your translation</em>
|
50
50
|
|
51
51
|
|
52
|
-
=== Generating or
|
52
|
+
=== Generating or creating a translation
|
53
53
|
|
54
54
|
==== Generating a translation
|
55
|
-
If
|
55
|
+
If your database is large and complex, it might be a bit too much work to write the translation file by hand. Mongify's translate command can help with this:
|
56
56
|
mongify translation -c database.config
|
57
57
|
Or pipe it right into a file by running
|
58
58
|
mongify translation -c database.config > translation_file.rb
|
59
59
|
|
60
60
|
==== Creating a translation
|
61
|
-
Creating a translation is pretty
|
61
|
+
Creating a translation is pretty straightforward. It looks something like this:
|
62
62
|
|
63
63
|
table "users" do
|
64
64
|
column "id", :key
|
@@ -130,7 +130,7 @@ Save the file as <tt>"translation_file.rb"</tt> and run the command:
|
|
130
130
|
|
131
131
|
== Translation Layout and Options
|
132
132
|
|
133
|
-
When dealing with a translation, there
|
133
|
+
When dealing with a translation, there are a few options you can set
|
134
134
|
|
135
135
|
=== Table
|
136
136
|
|
@@ -179,6 +179,12 @@ Table Options are as follow:
|
|
179
179
|
end # Moving records around, renaming records, changing values in row based on
|
180
180
|
end # some values! Checkout Mongify::Database::DataRow to learn more
|
181
181
|
|
182
|
+
table "users" do # Here is how to set new ID using the old id
|
183
|
+
before_save do |row|
|
184
|
+
row._id = row.delete('pre_mongified_id')
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
182
188
|
table "preferences", :embed_in => "users" do # As of version 0.2, embedded tables with a before_save will take an
|
183
189
|
before_save do |pref_row, user_row| # extra argument which is the parent row of the embedded table.
|
184
190
|
user_row.email_me = pref_row.delete('email_me') # This gives you the ability to move things from an embedded table row
|
@@ -249,7 +255,7 @@ If you have any issues, please feel free to report them here: {issue tracker}[ht
|
|
249
255
|
== TODO
|
250
256
|
* Allow deeper embedding
|
251
257
|
* Test in different databases
|
252
|
-
* Give an ability to mark source DB
|
258
|
+
* Give an ability to mark source DB rows as imported (allowing Mongify to run as a on going converter)
|
253
259
|
|
254
260
|
== Known Issues
|
255
261
|
* Can't do anything to an embedded table
|
@@ -130,7 +130,15 @@ module Mongify
|
|
130
130
|
def fetch_reference_ids(table, row)
|
131
131
|
attributes = {}
|
132
132
|
table.reference_columns.each do |c|
|
133
|
-
new_id =
|
133
|
+
new_id = nil
|
134
|
+
if row[c.name.to_s].is_a?(Array)
|
135
|
+
new_id = []
|
136
|
+
row[c.name.to_s].each do |old_id|
|
137
|
+
new_id << no_sql_connection.get_id_using_pre_mongified_id(c.references.to_s, old_id)
|
138
|
+
end
|
139
|
+
else
|
140
|
+
new_id = no_sql_connection.get_id_using_pre_mongified_id(c.references.to_s, row[c.name.to_s])
|
141
|
+
end
|
134
142
|
attributes.merge!(c.name => new_id) unless new_id.nil?
|
135
143
|
end
|
136
144
|
attributes
|
@@ -155,4 +163,4 @@ module Mongify
|
|
155
163
|
|
156
164
|
end
|
157
165
|
end
|
158
|
-
end
|
166
|
+
end
|
data/lib/mongify/version.rb
CHANGED
@@ -68,6 +68,17 @@ describe Mongify::Translation::Process do
|
|
68
68
|
@no_sql_connection.should_receive(:get_id_using_pre_mongified_id).with('users', 1).once.and_return(500)
|
69
69
|
@translation.send(:fetch_reference_ids, @table, {'user_id' => 1}).should == {'user_id' => 500}
|
70
70
|
end
|
71
|
+
|
72
|
+
it "should get correct information for arrays" do
|
73
|
+
@no_sql_connection = mock()
|
74
|
+
@translation.stub(:no_sql_connection).and_return(@no_sql_connection)
|
75
|
+
@table = mock(:translate => {}, :name => 'users', :embedded? => false)
|
76
|
+
@column = mock(:name => 'user_ids', :references => 'users')
|
77
|
+
@table.stub(:reference_columns).and_return([@column])
|
78
|
+
@no_sql_connection.should_receive(:get_id_using_pre_mongified_id).with('users', 1).once.and_return(500)
|
79
|
+
@no_sql_connection.should_receive(:get_id_using_pre_mongified_id).with('users', 2).once.and_return(501)
|
80
|
+
@translation.send(:fetch_reference_ids, @table, {'user_ids' => [1, 2]}).should == {'user_ids' => [500, 501]}
|
81
|
+
end
|
71
82
|
end
|
72
83
|
|
73
84
|
context "processing actions" do
|
metadata
CHANGED
@@ -1,251 +1,251 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.3'
|
5
4
|
prerelease:
|
5
|
+
version: 0.3.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Andrew Kalek
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
type: :runtime
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.0.3
|
15
22
|
name: activerecord
|
23
|
+
prerelease: false
|
16
24
|
requirement: !ruby/object:Gem::Requirement
|
17
25
|
none: false
|
18
26
|
requirements:
|
19
27
|
- - ! '>='
|
20
28
|
- !ruby/object:Gem::Version
|
21
29
|
version: 3.0.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
22
31
|
type: :runtime
|
23
|
-
prerelease: false
|
24
32
|
version_requirements: !ruby/object:Gem::Requirement
|
25
33
|
none: false
|
26
34
|
requirements:
|
27
35
|
- - ! '>='
|
28
36
|
- !ruby/object:Gem::Version
|
29
37
|
version: 3.0.3
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
38
|
name: activesupport
|
39
|
+
prerelease: false
|
32
40
|
requirement: !ruby/object:Gem::Requirement
|
33
41
|
none: false
|
34
42
|
requirements:
|
35
43
|
- - ! '>='
|
36
44
|
- !ruby/object:Gem::Version
|
37
45
|
version: 3.0.3
|
46
|
+
- !ruby/object:Gem::Dependency
|
38
47
|
type: :runtime
|
39
|
-
prerelease: false
|
40
48
|
version_requirements: !ruby/object:Gem::Requirement
|
41
49
|
none: false
|
42
50
|
requirements:
|
43
51
|
- - ! '>='
|
44
52
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
46
|
-
- !ruby/object:Gem::Dependency
|
53
|
+
version: '0'
|
47
54
|
name: mysql2
|
55
|
+
prerelease: false
|
48
56
|
requirement: !ruby/object:Gem::Requirement
|
49
57
|
none: false
|
50
58
|
requirements:
|
51
59
|
- - ! '>='
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
54
63
|
type: :runtime
|
55
|
-
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
65
|
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
- !ruby/object:Gem::Dependency
|
69
|
+
version: 1.1.5
|
63
70
|
name: mongo
|
71
|
+
prerelease: false
|
64
72
|
requirement: !ruby/object:Gem::Requirement
|
65
73
|
none: false
|
66
74
|
requirements:
|
67
75
|
- - ! '>='
|
68
76
|
- !ruby/object:Gem::Version
|
69
77
|
version: 1.1.5
|
78
|
+
- !ruby/object:Gem::Dependency
|
70
79
|
type: :runtime
|
71
|
-
prerelease: false
|
72
80
|
version_requirements: !ruby/object:Gem::Requirement
|
73
81
|
none: false
|
74
82
|
requirements:
|
75
83
|
- - ! '>='
|
76
84
|
- !ruby/object:Gem::Version
|
77
85
|
version: 1.1.5
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
86
|
name: bson_ext
|
87
|
+
prerelease: false
|
80
88
|
requirement: !ruby/object:Gem::Requirement
|
81
89
|
none: false
|
82
90
|
requirements:
|
83
91
|
- - ! '>='
|
84
92
|
- !ruby/object:Gem::Version
|
85
93
|
version: 1.1.5
|
94
|
+
- !ruby/object:Gem::Dependency
|
86
95
|
type: :runtime
|
87
|
-
prerelease: false
|
88
96
|
version_requirements: !ruby/object:Gem::Requirement
|
89
97
|
none: false
|
90
98
|
requirements:
|
91
99
|
- - ! '>='
|
92
100
|
- !ruby/object:Gem::Version
|
93
|
-
version: 1.1
|
94
|
-
- !ruby/object:Gem::Dependency
|
101
|
+
version: 1.6.1
|
95
102
|
name: highline
|
103
|
+
prerelease: false
|
96
104
|
requirement: !ruby/object:Gem::Requirement
|
97
105
|
none: false
|
98
106
|
requirements:
|
99
107
|
- - ! '>='
|
100
108
|
- !ruby/object:Gem::Version
|
101
109
|
version: 1.6.1
|
102
|
-
|
103
|
-
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
type: :development
|
104
112
|
version_requirements: !ruby/object:Gem::Requirement
|
105
113
|
none: false
|
106
114
|
requirements:
|
107
115
|
- - ! '>='
|
108
116
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
110
|
-
- !ruby/object:Gem::Dependency
|
117
|
+
version: '2.0'
|
111
118
|
name: rspec
|
119
|
+
prerelease: false
|
112
120
|
requirement: !ruby/object:Gem::Requirement
|
113
121
|
none: false
|
114
122
|
requirements:
|
115
123
|
- - ! '>='
|
116
124
|
- !ruby/object:Gem::Version
|
117
125
|
version: '2.0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
118
127
|
type: :development
|
119
|
-
prerelease: false
|
120
128
|
version_requirements: !ruby/object:Gem::Requirement
|
121
129
|
none: false
|
122
130
|
requirements:
|
123
131
|
- - ! '>='
|
124
132
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
126
|
-
- !ruby/object:Gem::Dependency
|
133
|
+
version: 0.9.9
|
127
134
|
name: rcov
|
135
|
+
prerelease: false
|
128
136
|
requirement: !ruby/object:Gem::Requirement
|
129
137
|
none: false
|
130
138
|
requirements:
|
131
139
|
- - ! '>='
|
132
140
|
- !ruby/object:Gem::Version
|
133
141
|
version: 0.9.9
|
142
|
+
- !ruby/object:Gem::Dependency
|
134
143
|
type: :development
|
135
|
-
prerelease: false
|
136
144
|
version_requirements: !ruby/object:Gem::Requirement
|
137
145
|
none: false
|
138
146
|
requirements:
|
139
147
|
- - ! '>='
|
140
148
|
- !ruby/object:Gem::Version
|
141
|
-
version: 0.
|
142
|
-
- !ruby/object:Gem::Dependency
|
149
|
+
version: '0.10'
|
143
150
|
name: cucumber
|
151
|
+
prerelease: false
|
144
152
|
requirement: !ruby/object:Gem::Requirement
|
145
153
|
none: false
|
146
154
|
requirements:
|
147
155
|
- - ! '>='
|
148
156
|
- !ruby/object:Gem::Version
|
149
157
|
version: '0.10'
|
158
|
+
- !ruby/object:Gem::Dependency
|
150
159
|
type: :development
|
151
|
-
prerelease: false
|
152
160
|
version_requirements: !ruby/object:Gem::Requirement
|
153
161
|
none: false
|
154
162
|
requirements:
|
155
163
|
- - ! '>='
|
156
164
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
158
|
-
- !ruby/object:Gem::Dependency
|
165
|
+
version: 0.9.8
|
159
166
|
name: mocha
|
167
|
+
prerelease: false
|
160
168
|
requirement: !ruby/object:Gem::Requirement
|
161
169
|
none: false
|
162
170
|
requirements:
|
163
171
|
- - ! '>='
|
164
172
|
- !ruby/object:Gem::Version
|
165
173
|
version: 0.9.8
|
174
|
+
- !ruby/object:Gem::Dependency
|
166
175
|
type: :development
|
167
|
-
prerelease: false
|
168
176
|
version_requirements: !ruby/object:Gem::Requirement
|
169
177
|
none: false
|
170
178
|
requirements:
|
171
179
|
- - ! '>='
|
172
180
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
174
|
-
- !ruby/object:Gem::Dependency
|
181
|
+
version: 0.5.3
|
175
182
|
name: yard
|
183
|
+
prerelease: false
|
176
184
|
requirement: !ruby/object:Gem::Requirement
|
177
185
|
none: false
|
178
186
|
requirements:
|
179
187
|
- - ! '>='
|
180
188
|
- !ruby/object:Gem::Version
|
181
189
|
version: 0.5.3
|
190
|
+
- !ruby/object:Gem::Dependency
|
182
191
|
type: :development
|
183
|
-
prerelease: false
|
184
192
|
version_requirements: !ruby/object:Gem::Requirement
|
185
193
|
none: false
|
186
194
|
requirements:
|
187
195
|
- - ! '>='
|
188
196
|
- !ruby/object:Gem::Version
|
189
|
-
version: 0.
|
190
|
-
- !ruby/object:Gem::Dependency
|
197
|
+
version: '0.6'
|
191
198
|
name: watchr
|
199
|
+
prerelease: false
|
192
200
|
requirement: !ruby/object:Gem::Requirement
|
193
201
|
none: false
|
194
202
|
requirements:
|
195
203
|
- - ! '>='
|
196
204
|
- !ruby/object:Gem::Version
|
197
205
|
version: '0.6'
|
206
|
+
- !ruby/object:Gem::Dependency
|
198
207
|
type: :development
|
199
|
-
prerelease: false
|
200
208
|
version_requirements: !ruby/object:Gem::Requirement
|
201
209
|
none: false
|
202
210
|
requirements:
|
203
211
|
- - ! '>='
|
204
212
|
- !ruby/object:Gem::Version
|
205
|
-
version: '
|
206
|
-
- !ruby/object:Gem::Dependency
|
213
|
+
version: '1.3'
|
207
214
|
name: sqlite3-ruby
|
215
|
+
prerelease: false
|
208
216
|
requirement: !ruby/object:Gem::Requirement
|
209
217
|
none: false
|
210
218
|
requirements:
|
211
219
|
- - ! '>='
|
212
220
|
- !ruby/object:Gem::Version
|
213
221
|
version: '1.3'
|
222
|
+
- !ruby/object:Gem::Dependency
|
214
223
|
type: :development
|
215
|
-
prerelease: false
|
216
224
|
version_requirements: !ruby/object:Gem::Requirement
|
217
225
|
none: false
|
218
226
|
requirements:
|
219
227
|
- - ! '>='
|
220
228
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
222
|
-
- !ruby/object:Gem::Dependency
|
229
|
+
version: 2.8.1
|
223
230
|
name: mysql
|
231
|
+
prerelease: false
|
224
232
|
requirement: !ruby/object:Gem::Requirement
|
225
233
|
none: false
|
226
234
|
requirements:
|
227
235
|
- - ! '>='
|
228
236
|
- !ruby/object:Gem::Version
|
229
237
|
version: 2.8.1
|
238
|
+
- !ruby/object:Gem::Dependency
|
230
239
|
type: :development
|
231
|
-
prerelease: false
|
232
240
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
|
-
requirements:
|
235
|
-
- - ! '>='
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: 2.8.1
|
238
|
-
- !ruby/object:Gem::Dependency
|
239
|
-
name: rake
|
240
|
-
requirement: !ruby/object:Gem::Requirement
|
241
241
|
none: false
|
242
242
|
requirements:
|
243
243
|
- - ! '>='
|
244
244
|
- !ruby/object:Gem::Version
|
245
245
|
version: '0'
|
246
|
-
|
246
|
+
name: rake
|
247
247
|
prerelease: false
|
248
|
-
|
248
|
+
requirement: !ruby/object:Gem::Requirement
|
249
249
|
none: false
|
250
250
|
requirements:
|
251
251
|
- - ! '>='
|
@@ -353,13 +353,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
353
353
|
requirements:
|
354
354
|
- - ! '>='
|
355
355
|
- !ruby/object:Gem::Version
|
356
|
-
version: '0'
|
357
356
|
segments:
|
358
357
|
- 0
|
359
|
-
hash:
|
358
|
+
hash: 3995548791361454296
|
359
|
+
version: '0'
|
360
360
|
requirements: []
|
361
361
|
rubyforge_project:
|
362
|
-
rubygems_version: 1.8.
|
362
|
+
rubygems_version: 1.8.24
|
363
363
|
signing_key:
|
364
364
|
specification_version: 3
|
365
365
|
summary: Translate your SQL data to MongoDB with ease
|