mongify 0.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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