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 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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mongify (0.3)
4
+ mongify (0.3.1)
5
5
  activerecord (>= 3.0.3)
6
6
  activesupport (>= 3.0.3)
7
7
  bson_ext (>= 1.1.5)
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 it's job, it needs to know where your databases are located.
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 datbase.config
40
+ mongify check -c database.config
41
41
 
42
42
  ==== Options
43
- Currently the only option that is support it is for the mongodb_connection.
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 till you're ready to process your translation</em>
49
+ <em>You can omit the mongodb connection until you're ready to process your translation</em>
50
50
 
51
51
 
52
- === Generating or create a translation
52
+ === Generating or creating a translation
53
53
 
54
54
  ==== Generating a translation
55
- If you're database is large and complex, it might be a bit too much to hand write the translation file, Mongify can help by running the translate command:
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 straight forward. It looks something like this:
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 is a few options you can set
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 columns as imported (allowing Mongify to run as a on going converter)
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 = no_sql_connection.get_id_using_pre_mongified_id(c.references.to_s, row[c.name.to_s])
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
@@ -1,4 +1,4 @@
1
1
  module Mongify
2
2
  # Mongify's Current Version Number
3
- VERSION = "0.3"
3
+ VERSION = "0.3.1"
4
4
  end
@@ -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: 2012-09-12 00:00:00.000000000 Z
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: 3.0.3
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: '0'
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.5
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
- type: :runtime
103
- prerelease: false
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: 1.6.1
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: '2.0'
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.9.9
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: '0.10'
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.9.8
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.5.3
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: '0.6'
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: '1.3'
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
- type: :development
246
+ name: rake
247
247
  prerelease: false
248
- version_requirements: !ruby/object:Gem::Requirement
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: 993534914857598805
358
+ hash: 3995548791361454296
359
+ version: '0'
360
360
  requirements: []
361
361
  rubyforge_project:
362
- rubygems_version: 1.8.23
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