data_miner 1.3.4 → 1.3.6

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.
@@ -105,8 +105,15 @@ class DataMiner
105
105
  end
106
106
 
107
107
  def do_convert(row, value)
108
- raise "If you use 'from_units', you need to set 'to_units' (#{inspect})" unless wants_units?
109
- value.to_f.convert((from_units || unit_from_source(row)), (to_units || unit_from_source(row)))
108
+ unless wants_units?
109
+ raise ::RuntimeError, "[data_miner] If you use 'from_units', you need to set 'to_units' (#{inspect})"
110
+ end
111
+ final_from_units = (from_units || unit_from_source(row))
112
+ final_to_units = (to_units || unit_from_source(row))
113
+ if final_from_units.blank? or final_to_units.blank?
114
+ raise ::RuntimeError, "[data_miner] Missing units (from=#{final_from_units.inspect}, to=#{final_to_units.inspect}"
115
+ end
116
+ value.to_f.convert final_from_units, final_to_units
110
117
  end
111
118
 
112
119
  def do_sprintf(value)
@@ -1,5 +1,9 @@
1
1
  require 'posix/spawn'
2
+ require 'uri'
2
3
  class DataMiner
4
+ # Note that you probably shouldn't put taps into your Gemfile, because it depends on sequel and other gems that may not compile on Heroku (etc.)
5
+ #
6
+ # This class automatically detects if you have Bundler installed, and if so, executes the `taps` binary with a "clean" environment (i.e. one that will not pay attention to the fact that taps is not in your Gemfile)
3
7
  class Tap
4
8
  attr_reader :config
5
9
  attr_reader :description
@@ -97,12 +101,21 @@ class DataMiner
97
101
  }
98
102
  end
99
103
 
100
- def db_locator
104
+ # "user:pass"
105
+ # "user"
106
+ # nil
107
+ def userinfo
108
+ if username.present?
109
+ [username, password].select(&:present?).join(':')
110
+ end
111
+ end
112
+
113
+ def db_url
101
114
  case adapter
102
115
  when 'sqlite'
103
- database
116
+ "sqlite://#{database}"
104
117
  else
105
- "#{username}:#{password}@#{host}:#{port}/#{database}"
118
+ ::URI::Generic.new(adapter, userinfo, host, port, nil, "/#{database}", nil, nil, nil).to_s
106
119
  end
107
120
  end
108
121
 
@@ -110,15 +123,25 @@ class DataMiner
110
123
  args = [
111
124
  'taps',
112
125
  'pull',
113
- "#{adapter}://#{db_locator}",
126
+ db_url,
114
127
  source,
115
128
  '--indexes-first',
116
129
  '--tables',
117
130
  source_table_name
118
131
  ]
119
- child = ::POSIX::Spawn::Child.new *args
132
+ child = nil
133
+
134
+ # https://github.com/carlhuda/bundler/issues/1579
135
+ if defined?(::Bundler)
136
+ ::Bundler.with_clean_env do
137
+ child = ::POSIX::Spawn::Child.new(*args)
138
+ end
139
+ else
140
+ child = ::POSIX::Spawn::Child.new(*args)
141
+ end
142
+
120
143
  unless child.success?
121
- raise %{[data_miner gem] Got "#{child.err}" back when tried to run "#{args.join(' ')}". You may need to install taps manually.}
144
+ raise %{[data_miner gem] Got "#{child.err}" when tried "#{args.join(' ')}". You need to have the taps binary in your PATH. Putting it in your Gemfile, however, is not recommended.}
122
145
  end
123
146
  end
124
147
  end
@@ -1,3 +1,3 @@
1
1
  class DataMiner
2
- VERSION = '1.3.4'
2
+ VERSION = '1.3.6'
3
3
  end
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: 1.3.4
4
+ version: 1.3.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-12-13 00:00:00.000000000Z
14
+ date: 2012-02-10 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: remote_table
18
- requirement: &2164482280 !ruby/object:Gem::Requirement
18
+ requirement: &2164579240 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: 1.2.2
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2164482280
26
+ version_requirements: *2164579240
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
- requirement: &2164513760 !ruby/object:Gem::Requirement
29
+ requirement: &2164578480 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 2.3.4
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *2164513760
37
+ version_requirements: *2164578480
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: activesupport
40
- requirement: &2164513300 !ruby/object:Gem::Requirement
40
+ requirement: &2164577700 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: 2.3.4
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *2164513300
48
+ version_requirements: *2164577700
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: conversions
51
- requirement: &2164512840 !ruby/object:Gem::Requirement
51
+ requirement: &2164577080 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: 1.4.4
57
57
  type: :runtime
58
58
  prerelease: false
59
- version_requirements: *2164512840
59
+ version_requirements: *2164577080
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: blockenspiel
62
- requirement: &2164512380 !ruby/object:Gem::Requirement
62
+ requirement: &2164576420 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: 0.3.2
68
68
  type: :runtime
69
69
  prerelease: false
70
- version_requirements: *2164512380
70
+ version_requirements: *2164576420
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: errata
73
- requirement: &2164511920 !ruby/object:Gem::Requirement
73
+ requirement: &2164575740 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: 1.0.1
79
79
  type: :runtime
80
80
  prerelease: false
81
- version_requirements: *2164511920
81
+ version_requirements: *2164575740
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: posix-spawn
84
- requirement: &2164511540 !ruby/object:Gem::Requirement
84
+ requirement: &2164575260 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
- version_requirements: *2164511540
92
+ version_requirements: *2164575260
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: mini_record-compat
95
- requirement: &2164511080 !ruby/object:Gem::Requirement
95
+ requirement: &2164574580 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: '0'
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *2164511080
103
+ version_requirements: *2164574580
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: loose_tight_dictionary
106
- requirement: &2164510580 !ruby/object:Gem::Requirement
106
+ requirement: &2164573940 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: 0.0.5
112
112
  type: :development
113
113
  prerelease: false
114
- version_requirements: *2164510580
114
+ version_requirements: *2164573940
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: test-unit
117
- requirement: &2164510160 !ruby/object:Gem::Requirement
117
+ requirement: &2164573360 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ! '>='
@@ -122,10 +122,10 @@ dependencies:
122
122
  version: '0'
123
123
  type: :development
124
124
  prerelease: false
125
- version_requirements: *2164510160
125
+ version_requirements: *2164573360
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: shoulda
128
- requirement: &2164509700 !ruby/object:Gem::Requirement
128
+ requirement: &2164572800 !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
131
  - - ! '>='
@@ -133,10 +133,10 @@ dependencies:
133
133
  version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
- version_requirements: *2164509700
136
+ version_requirements: *2164572800
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: mysql
139
- requirement: &2164509280 !ruby/object:Gem::Requirement
139
+ requirement: &2164572140 !ruby/object:Gem::Requirement
140
140
  none: false
141
141
  requirements:
142
142
  - - ! '>='
@@ -144,10 +144,10 @@ dependencies:
144
144
  version: '0'
145
145
  type: :development
146
146
  prerelease: false
147
- version_requirements: *2164509280
147
+ version_requirements: *2164572140
148
148
  - !ruby/object:Gem::Dependency
149
149
  name: rake
150
- requirement: &2164508860 !ruby/object:Gem::Requirement
150
+ requirement: &2164571480 !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
153
153
  - - ! '>='
@@ -155,7 +155,7 @@ dependencies:
155
155
  version: '0'
156
156
  type: :development
157
157
  prerelease: false
158
- version_requirements: *2164508860
158
+ version_requirements: *2164571480
159
159
  description: Mine remote data into your ActiveRecord models. You can also convert
160
160
  units.
161
161
  email:
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
213
  version: '0'
214
214
  requirements: []
215
215
  rubyforge_project: data_miner
216
- rubygems_version: 1.8.10
216
+ rubygems_version: 1.8.15
217
217
  signing_key:
218
218
  specification_version: 3
219
219
  summary: Mine remote data into your ActiveRecord models.
@@ -229,3 +229,4 @@ test_files:
229
229
  - test/test_data_miner_process.rb
230
230
  - test/test_old_syntax.rb
231
231
  - test/test_tap.rb
232
+ has_rdoc: