data_miner 3.0.0.beta → 3.0.0.rc1

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 CHANGED
@@ -1,3 +1,9 @@
1
+ 3.0.0.rc1 / 2013-08-08
2
+
3
+ * Enhancements
4
+
5
+ * :field_name can be passed as an Array like [ :first_name, :last_name ], which will join them with a space
6
+
1
7
  3.0.0.beta / 2013-07-26
2
8
 
3
9
  * Enhancements
@@ -134,16 +134,18 @@ class DataMiner
134
134
  @hstore_key = name.split('.', 2)[1]
135
135
  end
136
136
 
137
- # Where to find the data in the row.
138
- # @return [String]
137
+ # Where to find the data in the row. If more than one field name, values are joined with a space.
138
+ # @return [Array<String>]
139
139
  def field_name
140
140
  return @field_name if defined?(@field_name)
141
- @field_name = if @field_name_settings
142
- @field_name_settings.to_s
141
+ @field_name = if @field_name_settings.is_a?(::Array)
142
+ @field_name_settings.map(&:to_s)
143
+ elsif @field_name_settings.is_a?(::String) or @field_name_settings.is_a?(::Symbol)
144
+ [ @field_name_settings.to_s ]
143
145
  elsif hstore?
144
- hstore_key
146
+ [ hstore_key ]
145
147
  else
146
- name
148
+ [ name ]
147
149
  end
148
150
  end
149
151
 
@@ -168,6 +170,8 @@ class DataMiner
168
170
  end
169
171
 
170
172
  # @private
173
+ ROW_HASH_FIELD_NAME = ['row_hash']
174
+ SINGLE_SPACE = ' '
171
175
  def read(row)
172
176
  if not column_exists?
173
177
  raise RuntimeError, "[data_miner] Table #{model.table_name} does not have column #{(hstore? ? hstore_column : name).inspect}"
@@ -182,10 +186,10 @@ class DataMiner
182
186
  else
183
187
  row[field_number]
184
188
  end
185
- elsif field_name == 'row_hash'
189
+ elsif field_name == ROW_HASH_FIELD_NAME
186
190
  row.row_hash
187
191
  elsif row.is_a?(::Hash) or row.is_a?(::ActiveSupport::OrderedHash)
188
- row[field_name] # remote_table hash keys are always strings
192
+ field_name.length > 1 ? row.values_at(*field_name).join(SINGLE_SPACE) : row[field_name[0]]
189
193
  end
190
194
  if value.nil?
191
195
  return
@@ -32,11 +32,12 @@ class DataMiner
32
32
 
33
33
  # @private
34
34
  def initialize(script, description, settings, &blk)
35
+ settings = settings.stringify_keys
35
36
  @script = script
36
37
  @description = description
37
38
  @blk = blk
38
- @after = settings[:after]
39
- @every = settings[:every]
39
+ @after = settings['after']
40
+ @every = settings['every']
40
41
  raise "can't do both after and every" if after and every
41
42
  end
42
43
 
@@ -1,3 +1,3 @@
1
1
  class DataMiner
2
- VERSION = '3.0.0.beta'
2
+ VERSION = '3.0.0.rc1'
3
3
  end
@@ -14,6 +14,7 @@ class Pet < ActiveRecord::Base
14
14
  col :favorite_food
15
15
  col :command_phrase
16
16
  col :emphatic_command_phrase
17
+ col :age_weight
17
18
  belongs_to :breed
18
19
 
19
20
 
@@ -36,6 +37,7 @@ class Pet < ActiveRecord::Base
36
37
  store :emphatic_command_phrase do |row|
37
38
  (row['command_phrase'] + "!!!!!") if row['command_phrase']
38
39
  end
40
+ store :age_weight, field_name: [:age, :weight]
39
41
  end
40
42
 
41
43
  end
@@ -47,6 +47,10 @@ describe DataMiner do
47
47
  FileUtils.mv "#{PETS}.bak", PETS
48
48
  end
49
49
  end
50
+ it "combines fields with a space if array passed to :field_name" do
51
+ Pet.run_data_miner!
52
+ Pet.find('Jerry').age_weight.must_equal '5 10'
53
+ end
50
54
  it "provides :run_data_miner_on_parent_associations!" do
51
55
  Pet.run_data_miner!
52
56
  Pet.find('Jerry').breed.must_equal Breed.find('Beagle')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_miner
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta
4
+ version: 3.0.0.rc1
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2013-07-26 00:00:00.000000000 Z
16
+ date: 2013-08-08 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activerecord