data_miner 1.3.8 → 2.0.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 +42 -0
- data/Gemfile +19 -3
- data/README.rdoc +3 -3
- data/Rakefile +13 -15
- data/data_miner.gemspec +4 -15
- data/lib/data_miner.rb +69 -70
- data/lib/data_miner/active_record_extensions.rb +17 -22
- data/lib/data_miner/attribute.rb +176 -179
- data/lib/data_miner/dictionary.rb +38 -31
- data/lib/data_miner/run.rb +49 -18
- data/lib/data_miner/script.rb +116 -0
- data/lib/data_miner/step.rb +5 -0
- data/lib/data_miner/step/import.rb +74 -0
- data/lib/data_miner/step/process.rb +34 -0
- data/lib/data_miner/step/tap.rb +134 -0
- data/lib/data_miner/version.rb +1 -1
- data/test/helper.rb +26 -24
- data/test/support/breeds.xls +0 -0
- data/test/support/pet_color_dictionary.en.csv +5 -0
- data/test/support/pet_color_dictionary.es.csv +5 -0
- data/test/support/pets.csv +5 -0
- data/test/support/pets_funny.csv +4 -0
- data/test/test_data_miner.rb +103 -0
- data/test/test_earth_import.rb +25 -0
- data/test/test_earth_tap.rb +25 -0
- data/test/test_safety.rb +43 -0
- metadata +72 -78
- data/.document +0 -5
- data/lib/data_miner/config.rb +0 -124
- data/lib/data_miner/import.rb +0 -93
- data/lib/data_miner/process.rb +0 -38
- data/lib/data_miner/tap.rb +0 -143
- data/test/support/aircraft.rb +0 -102
- data/test/support/airport.rb +0 -16
- data/test/support/automobile_fuel_type.rb +0 -40
- data/test/support/automobile_variant.rb +0 -362
- data/test/support/country.rb +0 -15
- data/test/support/test_database.rb +0 -311
- data/test/test_data_miner_attribute.rb +0 -111
- data/test/test_data_miner_process.rb +0 -18
- data/test/test_old_syntax.rb +0 -825
- data/test/test_tap.rb +0 -21
data/lib/data_miner/version.rb
CHANGED
data/test/helper.rb
CHANGED
@@ -1,30 +1,32 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
Bundler.setup
|
4
|
-
require 'test/unit'
|
5
|
-
require 'shoulda'
|
6
|
-
require 'mini_record'
|
7
|
-
require 'logger'
|
8
|
-
# require 'ruby-debug'
|
9
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
11
|
-
require 'data_miner'
|
12
|
-
class Test::Unit::TestCase
|
13
|
-
end
|
14
|
-
|
15
|
-
test_log = File.open('test.log', 'w')
|
16
|
-
test_log.sync = true
|
17
|
-
DataMiner.logger = Logger.new test_log
|
2
|
+
require 'bundler/setup'
|
18
3
|
|
19
|
-
|
20
|
-
require '
|
4
|
+
if Bundler.definition.specs['ruby-debug19'].first or Bundler.definition.specs['ruby-debug'].first
|
5
|
+
require 'ruby-debug'
|
6
|
+
end
|
21
7
|
|
22
|
-
|
8
|
+
require 'minitest/spec'
|
9
|
+
require 'minitest/autorun'
|
10
|
+
require 'minitest/reporters'
|
11
|
+
MiniTest::Unit.runner = MiniTest::SuiteRunner.new
|
12
|
+
MiniTest::Unit.runner.reporters << MiniTest::Reporters::SpecReporter.new
|
23
13
|
|
24
|
-
|
25
|
-
|
14
|
+
cmd = %{mysql -u root -ppassword -e "drop database data_miner_test; create database data_miner_test charset utf8"}
|
15
|
+
$stderr.puts "Running `#{cmd}`..."
|
16
|
+
system cmd
|
17
|
+
$stderr.puts "Done."
|
26
18
|
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
require 'active_record'
|
20
|
+
require 'logger'
|
21
|
+
ActiveRecord::Base.logger = Logger.new $stderr
|
22
|
+
ActiveRecord::Base.logger.level = Logger::INFO
|
23
|
+
# ActiveRecord::Base.logger.level = Logger::DEBUG
|
24
|
+
ActiveRecord::Base.establish_connection(
|
25
|
+
'adapter' => 'mysql2',
|
26
|
+
'database' => 'data_miner_test',
|
27
|
+
'username' => 'root',
|
28
|
+
'password' => 'password'
|
29
|
+
)
|
30
30
|
|
31
|
+
require 'data_miner'
|
32
|
+
DataMiner::Run.auto_upgrade!
|
Binary file
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
PETS = File.expand_path('../support/pets.csv', __FILE__)
|
5
|
+
PETS_FUNNY = File.expand_path('../support/pets_funny.csv', __FILE__)
|
6
|
+
COLOR_DICTIONARY_ENGLISH = File.expand_path('../support/pet_color_dictionary.en.csv', __FILE__)
|
7
|
+
COLOR_DICTIONARY_SPANISH = File.expand_path('../support/pet_color_dictionary.es.csv', __FILE__)
|
8
|
+
BREEDS = File.expand_path('../support/breeds.xls', __FILE__)
|
9
|
+
|
10
|
+
class Pet < ActiveRecord::Base
|
11
|
+
self.primary_key = "name"
|
12
|
+
col :name
|
13
|
+
col :breed_id
|
14
|
+
col :color_id
|
15
|
+
col :age, :type => :integer
|
16
|
+
belongs_to :breed
|
17
|
+
data_miner do
|
18
|
+
process :auto_upgrade!
|
19
|
+
process :run_data_miner_on_parent_associations!
|
20
|
+
import("A list of pets", :url => "file://#{PETS}") do
|
21
|
+
key :name
|
22
|
+
store :age
|
23
|
+
store :breed_id, :field_name => :breed
|
24
|
+
store :color_id, :field_name => :color, :dictionary => { :url => "file://#{COLOR_DICTIONARY_ENGLISH}", :input => :input, :output => :output }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Breed < ActiveRecord::Base
|
30
|
+
class << self
|
31
|
+
def update_average_age!
|
32
|
+
# make sure pet is populated
|
33
|
+
Pet.run_data_miner!
|
34
|
+
update_all %{breeds.average_age = (SELECT AVG(pets.age) FROM pets WHERE pets.breed_id = breeds.name)}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
self.primary_key = "name"
|
38
|
+
col :name
|
39
|
+
col :average_age, :type => :float
|
40
|
+
data_miner do
|
41
|
+
process :auto_upgrade!
|
42
|
+
import("A list of breeds", :url => "file://#{BREEDS}") do
|
43
|
+
key :name, :field_name => 'Breed name'
|
44
|
+
end
|
45
|
+
process :update_average_age!
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
Pet.auto_upgrade!
|
50
|
+
|
51
|
+
describe DataMiner do
|
52
|
+
describe "when used to import example data about pets" do
|
53
|
+
before do
|
54
|
+
Pet.delete_all
|
55
|
+
end
|
56
|
+
it "is idempotent given a key" do
|
57
|
+
Pet.run_data_miner!
|
58
|
+
first_count = Pet.count
|
59
|
+
Pet.run_data_miner!
|
60
|
+
Pet.count.must_equal first_count
|
61
|
+
end
|
62
|
+
it "can map fields in the source file to columns in the database" do
|
63
|
+
Pet.run_data_miner!
|
64
|
+
Pet.find('Jerry').breed_id.must_equal 'Beagle'
|
65
|
+
end
|
66
|
+
it "can use a dictionary to translate source data" do
|
67
|
+
Pet.run_data_miner!
|
68
|
+
Pet.find('Jerry').color_id.must_equal 'brown/black'
|
69
|
+
end
|
70
|
+
it "refreshes the dictionary for every run" do
|
71
|
+
Pet.run_data_miner!
|
72
|
+
Pet.find('Jerry').color_id.must_equal 'brown/black'
|
73
|
+
begin
|
74
|
+
FileUtils.mv COLOR_DICTIONARY_ENGLISH, "#{COLOR_DICTIONARY_ENGLISH}.bak"
|
75
|
+
FileUtils.cp COLOR_DICTIONARY_SPANISH, COLOR_DICTIONARY_ENGLISH # oops! somebody swapped in a spanish dictionary
|
76
|
+
Pet.run_data_miner!
|
77
|
+
Pet.find('Jerry').color_id.must_equal 'morron/negro'
|
78
|
+
ensure
|
79
|
+
FileUtils.mv "#{COLOR_DICTIONARY_ENGLISH}.bak", COLOR_DICTIONARY_ENGLISH
|
80
|
+
end
|
81
|
+
end
|
82
|
+
it "refreshes the data source for every run" do
|
83
|
+
Pet.run_data_miner!
|
84
|
+
Pet.find('Jerry').breed_id.must_equal 'Beagle'
|
85
|
+
begin
|
86
|
+
FileUtils.mv PETS, "#{PETS}.bak"
|
87
|
+
FileUtils.cp PETS_FUNNY, PETS # oops! somebody swapped in a funny data source
|
88
|
+
Pet.run_data_miner!
|
89
|
+
Pet.find('Jerry').breed_id.must_equal 'Badger'
|
90
|
+
ensure
|
91
|
+
FileUtils.mv "#{PETS}.bak", PETS
|
92
|
+
end
|
93
|
+
end
|
94
|
+
it "provides :run_data_miner_on_parent_associations!" do
|
95
|
+
Pet.run_data_miner!
|
96
|
+
Pet.find('Jerry').breed.must_equal Breed.find('Beagle')
|
97
|
+
end
|
98
|
+
it "runs class methods" do
|
99
|
+
Breed.run_data_miner!
|
100
|
+
Breed.find('Beagle').average_age.must_equal((5+2)/2.0)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
require 'earth'
|
4
|
+
|
5
|
+
# use earth, which has a plethora of real-world data_miner blocks
|
6
|
+
Earth.init :locality, :pet, :load_data_miner => true, :apply_schemas => true
|
7
|
+
|
8
|
+
describe DataMiner do
|
9
|
+
describe "being used by the Earth library's import steps" do
|
10
|
+
describe "for pets" do
|
11
|
+
it "can pull breed and species" do
|
12
|
+
Breed.run_data_miner!
|
13
|
+
Breed.find('Golden Retriever').species.must_equal Species.find('dog')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
describe "for localities" do
|
17
|
+
it "can handle non-latin characters" do
|
18
|
+
Country.run_data_miner!
|
19
|
+
Country.find('DE').name.must_equal 'Germany'
|
20
|
+
Country.find('AX').name.must_equal 'Åland Islands'
|
21
|
+
Country.find('CI').name.must_equal "Côte d'Ivoire"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
require 'earth'
|
4
|
+
|
5
|
+
# use earth, which has a plethora of real-world data_miner blocks
|
6
|
+
Earth.init :locality, :pet, :load_data_miner => false, :apply_schemas => true
|
7
|
+
|
8
|
+
DataMiner.run %w{Country Breed}
|
9
|
+
|
10
|
+
describe DataMiner do
|
11
|
+
describe "being used by the Earth library's tap steps" do
|
12
|
+
describe "for pets" do
|
13
|
+
it "can pull breed and species" do
|
14
|
+
Breed.find('Golden Retriever').species.must_equal Species.find('dog')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
describe "for localities" do
|
18
|
+
it "can handle non-latin characters" do
|
19
|
+
Country.find('DE').name.must_equal 'Germany'
|
20
|
+
Country.find('AX').name.must_equal 'Åland Islands'
|
21
|
+
Country.find('CI').name.must_equal "Côte d'Ivoire"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/test/test_safety.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
require 'earth'
|
4
|
+
|
5
|
+
# use earth, which has a plethora of real-world data_miner blocks
|
6
|
+
Earth.init :locality, :pet, :load_data_miner => true, :apply_schemas => true
|
7
|
+
|
8
|
+
describe DataMiner do
|
9
|
+
describe "when being run in a multi-threaded environment" do
|
10
|
+
it "tries not to duplicate data" do
|
11
|
+
begin
|
12
|
+
old_thread_abort_on_exception = Thread.abort_on_exception
|
13
|
+
Thread.abort_on_exception = false
|
14
|
+
Breed.delete_all
|
15
|
+
Breed.run_data_miner!
|
16
|
+
reference_count = Breed.count
|
17
|
+
Breed.delete_all
|
18
|
+
threads = (0..2).map do |i|
|
19
|
+
Thread.new do
|
20
|
+
$stderr.write "Thread #{i} starting\n"
|
21
|
+
Breed.run_data_miner!
|
22
|
+
$stderr.write "Thread #{i} done\n"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
exceptions = []
|
26
|
+
threads.each do |t|
|
27
|
+
begin
|
28
|
+
t.join
|
29
|
+
rescue
|
30
|
+
exceptions << $!
|
31
|
+
end
|
32
|
+
end
|
33
|
+
exceptions.length.must_equal 2
|
34
|
+
exceptions.each do |exception|
|
35
|
+
exception.must_be_kind_of LockMethod::Locked
|
36
|
+
end
|
37
|
+
Breed.count.must_equal reference_count
|
38
|
+
ensure
|
39
|
+
Thread.abort_on_exception = old_thread_abort_on_exception
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
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:
|
4
|
+
version: 2.0.1
|
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: 2012-
|
14
|
+
date: 2012-04-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: remote_table
|
18
|
-
requirement:
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,15 @@ dependencies:
|
|
23
23
|
version: 1.2.2
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements:
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ! '>='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.2.2
|
27
32
|
- !ruby/object:Gem::Dependency
|
28
33
|
name: activerecord
|
29
|
-
requirement:
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
30
35
|
none: false
|
31
36
|
requirements:
|
32
37
|
- - ! '>='
|
@@ -34,10 +39,15 @@ dependencies:
|
|
34
39
|
version: 2.3.4
|
35
40
|
type: :runtime
|
36
41
|
prerelease: false
|
37
|
-
version_requirements:
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.3.4
|
38
48
|
- !ruby/object:Gem::Dependency
|
39
49
|
name: activesupport
|
40
|
-
requirement:
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
41
51
|
none: false
|
42
52
|
requirements:
|
43
53
|
- - ! '>='
|
@@ -45,10 +55,15 @@ dependencies:
|
|
45
55
|
version: 2.3.4
|
46
56
|
type: :runtime
|
47
57
|
prerelease: false
|
48
|
-
version_requirements:
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 2.3.4
|
49
64
|
- !ruby/object:Gem::Dependency
|
50
65
|
name: conversions
|
51
|
-
requirement:
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
52
67
|
none: false
|
53
68
|
requirements:
|
54
69
|
- - ! '>='
|
@@ -56,21 +71,15 @@ dependencies:
|
|
56
71
|
version: 1.4.4
|
57
72
|
type: :runtime
|
58
73
|
prerelease: false
|
59
|
-
version_requirements:
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: blockenspiel
|
62
|
-
requirement: &2164619140 !ruby/object:Gem::Requirement
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
75
|
none: false
|
64
76
|
requirements:
|
65
77
|
- - ! '>='
|
66
78
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
68
|
-
type: :runtime
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: *2164619140
|
79
|
+
version: 1.4.4
|
71
80
|
- !ruby/object:Gem::Dependency
|
72
81
|
name: errata
|
73
|
-
requirement:
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
74
83
|
none: false
|
75
84
|
requirements:
|
76
85
|
- - ! '>='
|
@@ -78,73 +87,60 @@ dependencies:
|
|
78
87
|
version: 1.0.1
|
79
88
|
type: :runtime
|
80
89
|
prerelease: false
|
81
|
-
version_requirements:
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: mini_record-compat
|
84
|
-
requirement: &2164617640 !ruby/object:Gem::Requirement
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
91
|
none: false
|
86
92
|
requirements:
|
87
93
|
- - ! '>='
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: *2164617640
|
95
|
+
version: 1.0.1
|
93
96
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
95
|
-
requirement:
|
97
|
+
name: active_record_inline_schema
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
96
99
|
none: false
|
97
100
|
requirements:
|
98
101
|
- - ! '>='
|
99
102
|
- !ruby/object:Gem::Version
|
100
|
-
version: 0
|
101
|
-
type: :
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
102
105
|
prerelease: false
|
103
|
-
version_requirements:
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: test-unit
|
106
|
-
requirement: &2164616480 !ruby/object:Gem::Requirement
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ! '>='
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
|
-
type: :development
|
113
|
-
prerelease: false
|
114
|
-
version_requirements: *2164616480
|
115
112
|
- !ruby/object:Gem::Dependency
|
116
|
-
name:
|
117
|
-
requirement:
|
113
|
+
name: aasm
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
118
115
|
none: false
|
119
116
|
requirements:
|
120
117
|
- - ! '>='
|
121
118
|
- !ruby/object:Gem::Version
|
122
119
|
version: '0'
|
123
|
-
type: :
|
120
|
+
type: :runtime
|
124
121
|
prerelease: false
|
125
|
-
version_requirements:
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: mysql
|
128
|
-
requirement: &2164615420 !ruby/object:Gem::Requirement
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
129
123
|
none: false
|
130
124
|
requirements:
|
131
125
|
- - ! '>='
|
132
126
|
- !ruby/object:Gem::Version
|
133
127
|
version: '0'
|
134
|
-
type: :development
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: *2164615420
|
137
128
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
139
|
-
requirement:
|
129
|
+
name: lock_method
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
140
131
|
none: false
|
141
132
|
requirements:
|
142
133
|
- - ! '>='
|
143
134
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
145
|
-
type: :
|
135
|
+
version: 0.5.1
|
136
|
+
type: :runtime
|
146
137
|
prerelease: false
|
147
|
-
version_requirements:
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: 0.5.1
|
148
144
|
description: Mine remote data into your ActiveRecord models. You can also convert
|
149
145
|
units.
|
150
146
|
email:
|
@@ -153,7 +149,6 @@ executables: []
|
|
153
149
|
extensions: []
|
154
150
|
extra_rdoc_files: []
|
155
151
|
files:
|
156
|
-
- .document
|
157
152
|
- .gitignore
|
158
153
|
- CHANGELOG
|
159
154
|
- Gemfile
|
@@ -164,24 +159,24 @@ files:
|
|
164
159
|
- lib/data_miner.rb
|
165
160
|
- lib/data_miner/active_record_extensions.rb
|
166
161
|
- lib/data_miner/attribute.rb
|
167
|
-
- lib/data_miner/config.rb
|
168
162
|
- lib/data_miner/dictionary.rb
|
169
|
-
- lib/data_miner/import.rb
|
170
|
-
- lib/data_miner/process.rb
|
171
163
|
- lib/data_miner/run.rb
|
172
|
-
- lib/data_miner/
|
164
|
+
- lib/data_miner/script.rb
|
165
|
+
- lib/data_miner/step.rb
|
166
|
+
- lib/data_miner/step/import.rb
|
167
|
+
- lib/data_miner/step/process.rb
|
168
|
+
- lib/data_miner/step/tap.rb
|
173
169
|
- lib/data_miner/version.rb
|
174
170
|
- test/helper.rb
|
175
|
-
- test/support/
|
176
|
-
- test/support/
|
177
|
-
- test/support/
|
178
|
-
- test/support/
|
179
|
-
- test/support/
|
180
|
-
- test/
|
181
|
-
- test/
|
182
|
-
- test/
|
183
|
-
- test/
|
184
|
-
- test/test_tap.rb
|
171
|
+
- test/support/breeds.xls
|
172
|
+
- test/support/pet_color_dictionary.en.csv
|
173
|
+
- test/support/pet_color_dictionary.es.csv
|
174
|
+
- test/support/pets.csv
|
175
|
+
- test/support/pets_funny.csv
|
176
|
+
- test/test_data_miner.rb
|
177
|
+
- test/test_earth_import.rb
|
178
|
+
- test/test_earth_tap.rb
|
179
|
+
- test/test_safety.rb
|
185
180
|
homepage: https://github.com/seamusabshere/data_miner
|
186
181
|
licenses: []
|
187
182
|
post_install_message:
|
@@ -202,20 +197,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
197
|
version: '0'
|
203
198
|
requirements: []
|
204
199
|
rubyforge_project: data_miner
|
205
|
-
rubygems_version: 1.8.
|
200
|
+
rubygems_version: 1.8.21
|
206
201
|
signing_key:
|
207
202
|
specification_version: 3
|
208
203
|
summary: Mine remote data into your ActiveRecord models.
|
209
204
|
test_files:
|
210
205
|
- test/helper.rb
|
211
|
-
- test/support/
|
212
|
-
- test/support/
|
213
|
-
- test/support/
|
214
|
-
- test/support/
|
215
|
-
- test/support/
|
216
|
-
- test/
|
217
|
-
- test/
|
218
|
-
- test/
|
219
|
-
- test/
|
220
|
-
- test/test_tap.rb
|
206
|
+
- test/support/breeds.xls
|
207
|
+
- test/support/pet_color_dictionary.en.csv
|
208
|
+
- test/support/pet_color_dictionary.es.csv
|
209
|
+
- test/support/pets.csv
|
210
|
+
- test/support/pets_funny.csv
|
211
|
+
- test/test_data_miner.rb
|
212
|
+
- test/test_earth_import.rb
|
213
|
+
- test/test_earth_tap.rb
|
214
|
+
- test/test_safety.rb
|
221
215
|
has_rdoc:
|