usda-nutrient-database 1.0.1 → 1.1.0
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.
- checksums.yaml +4 -4
- data/db/migrate/8_add_timestamps_to_all_tables.rb +12 -0
- data/lib/usda_nutrient_database/import/base.rb +27 -5
- data/lib/usda_nutrient_database/import/food_groups.rb +2 -10
- data/lib/usda_nutrient_database/import/foods.rb +3 -10
- data/lib/usda_nutrient_database/import/foods_nutrients.rb +4 -10
- data/lib/usda_nutrient_database/import/footnotes.rb +5 -10
- data/lib/usda_nutrient_database/import/nutrients.rb +3 -10
- data/lib/usda_nutrient_database/import/source_codes.rb +2 -10
- data/lib/usda_nutrient_database/import/weights.rb +5 -10
- data/lib/usda_nutrient_database/tasks/usda_nutrient_database.rake +2 -2
- data/lib/usda_nutrient_database/version.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cc2d851a28100a977e5f1c243bb70ba4c7dc691
|
4
|
+
data.tar.gz: 62f598910c7b1e57188d08fd93c1a81c8abe2efd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14aeaa16b9758200bc3fd3f6f245c4b24ff1a05ae1a8cf55bfaa43cc0b6e04157a85997b22d2c9f79d9273c5973615afa8c630c0dba3363a7936b686aa53cba9
|
7
|
+
data.tar.gz: edcf5e47cc2a01dc93b66c9913e9510aab336d7647b3b95f494222f815a6537baf10565560f83f15cafc101c33d30367ba7b1c4490ded6e673d022a3a2802574
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class AddTimestampsToAllTables < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
[
|
4
|
+
:usda_food_groups, :usda_foods, :usda_foods_nutrients,
|
5
|
+
:usda_weights, :usda_footnotes, :usda_source_codes,
|
6
|
+
:usda_nutrients
|
7
|
+
].each do |table_name|
|
8
|
+
add_column table_name, :created_at, :datetime
|
9
|
+
add_column table_name, :updated_at, :datetime
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -3,23 +3,45 @@ require 'csv'
|
|
3
3
|
module UsdaNutrientDatabase
|
4
4
|
module Import
|
5
5
|
class Base
|
6
|
-
attr_reader :directory
|
7
|
-
|
8
6
|
def initialize(directory)
|
9
7
|
@directory = directory
|
10
8
|
end
|
11
9
|
|
12
10
|
def import
|
13
11
|
log_import_started
|
14
|
-
CSV.open(
|
15
|
-
"#{directory}/#{filename}", 'r:iso-8859-1:utf-8', csv_options
|
16
|
-
) do |csv|
|
12
|
+
CSV.open(file_location, 'r:iso-8859-1:utf-8', csv_options) do |csv|
|
17
13
|
csv.each { |row| extract_row(row) }
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
21
17
|
private
|
22
18
|
|
19
|
+
attr_reader :directory
|
20
|
+
|
21
|
+
def extract_row(row)
|
22
|
+
build_object(row).save
|
23
|
+
end
|
24
|
+
|
25
|
+
def build_object(row)
|
26
|
+
find_or_initialize(row).tap do |object|
|
27
|
+
columns.each_with_index do |column, index|
|
28
|
+
object.send("#{column}=", row[index])
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def columns
|
34
|
+
raise NotImplementedError
|
35
|
+
end
|
36
|
+
|
37
|
+
def find_or_initialize(row)
|
38
|
+
raise NotImplementedError
|
39
|
+
end
|
40
|
+
|
41
|
+
def file_location
|
42
|
+
"#{directory}/#{filename}"
|
43
|
+
end
|
44
|
+
|
23
45
|
def filename
|
24
46
|
raise NotImplementedError
|
25
47
|
end
|
@@ -4,16 +4,8 @@ module UsdaNutrientDatabase
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
def build_food_group(row)
|
12
|
-
UsdaNutrientDatabase::FoodGroup.new.tap do |food_group|
|
13
|
-
columns.each_with_index do |column, index|
|
14
|
-
food_group.send("#{column}=", row[index])
|
15
|
-
end
|
16
|
-
end
|
7
|
+
def find_or_initialize(row)
|
8
|
+
UsdaNutrientDatabase::FoodGroup.find_or_initialize_by(code: row[0])
|
17
9
|
end
|
18
10
|
|
19
11
|
def columns
|
@@ -6,16 +6,9 @@ module UsdaNutrientDatabase
|
|
6
6
|
|
7
7
|
private
|
8
8
|
|
9
|
-
def
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def build_food(row)
|
14
|
-
UsdaNutrientDatabase::Food.new.tap do |food|
|
15
|
-
columns.each_with_index do |column, index|
|
16
|
-
food.send("#{column}=", row[index])
|
17
|
-
end
|
18
|
-
end
|
9
|
+
def find_or_initialize(row)
|
10
|
+
UsdaNutrientDatabase::Food.
|
11
|
+
find_or_initialize_by(nutrient_databank_number: row[0])
|
19
12
|
end
|
20
13
|
|
21
14
|
def log_import_started
|
@@ -14,16 +14,10 @@ module UsdaNutrientDatabase
|
|
14
14
|
]
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
def build_foods_nutrient(row)
|
22
|
-
UsdaNutrientDatabase::FoodsNutrient.new.tap do |foods_nutrient|
|
23
|
-
columns.each_with_index do |column, index|
|
24
|
-
foods_nutrient.send("#{column}=", row[index])
|
25
|
-
end
|
26
|
-
end
|
17
|
+
def find_or_initialize(row)
|
18
|
+
UsdaNutrientDatabase::FoodsNutrient.find_or_initialize_by(
|
19
|
+
nutrient_databank_number: row[0], nutrient_number: row[1]
|
20
|
+
)
|
27
21
|
end
|
28
22
|
|
29
23
|
def filename
|
@@ -4,16 +4,11 @@ module UsdaNutrientDatabase
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
UsdaNutrientDatabase::Footnote.new.tap do |footnote|
|
13
|
-
columns.each_with_index do |column, index|
|
14
|
-
footnote.send("#{column}=", row[index])
|
15
|
-
end
|
16
|
-
end
|
7
|
+
def find_or_initialize(row)
|
8
|
+
UsdaNutrientDatabase::Footnote.find_or_initialize_by(
|
9
|
+
nutrient_databank_number: row[0], footnote_number: row[1],
|
10
|
+
nutrient_number: row[2]
|
11
|
+
)
|
17
12
|
end
|
18
13
|
|
19
14
|
def filename
|
@@ -4,16 +4,9 @@ module UsdaNutrientDatabase
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def build_nutrient(row)
|
12
|
-
UsdaNutrientDatabase::Nutrient.new.tap do |nutrient|
|
13
|
-
columns.each_with_index do |column, index|
|
14
|
-
nutrient.send("#{column}=", row[index])
|
15
|
-
end
|
16
|
-
end
|
7
|
+
def find_or_initialize(row)
|
8
|
+
UsdaNutrientDatabase::Nutrient.
|
9
|
+
find_or_initialize_by(nutrient_number: row[0])
|
17
10
|
end
|
18
11
|
|
19
12
|
def columns
|
@@ -4,16 +4,8 @@ module UsdaNutrientDatabase
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
def build_source_code(row)
|
12
|
-
UsdaNutrientDatabase::SourceCode.new.tap do |source_code|
|
13
|
-
columns.each_with_index do |column, index|
|
14
|
-
source_code.send("#{column}=", row[index])
|
15
|
-
end
|
16
|
-
end
|
7
|
+
def find_or_initialize(row)
|
8
|
+
UsdaNutrientDatabase::SourceCode.find_or_initialize_by(code: row[0])
|
17
9
|
end
|
18
10
|
|
19
11
|
def columns
|
@@ -4,16 +4,11 @@ module UsdaNutrientDatabase
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
UsdaNutrientDatabase::Weight.new.tap do |weight|
|
13
|
-
columns.each_with_index do |column, index|
|
14
|
-
weight.send("#{column}=", row[index])
|
15
|
-
end
|
16
|
-
end
|
7
|
+
def find_or_initialize(row)
|
8
|
+
UsdaNutrientDatabase::Weight.find_or_initialize_by(
|
9
|
+
nutrient_databank_number: row[0],
|
10
|
+
sequence_number: row[1]
|
11
|
+
)
|
17
12
|
end
|
18
13
|
|
19
14
|
def filename
|
@@ -1,7 +1,7 @@
|
|
1
1
|
namespace :usda do
|
2
2
|
desc 'Import the latest USDA nutrition data'
|
3
3
|
task import: :environment do
|
4
|
-
UsdaNutrientDatabase::Importer.new('tmp/usda', '
|
4
|
+
UsdaNutrientDatabase::Importer.new('tmp/usda', 'sr26').import
|
5
5
|
end
|
6
6
|
|
7
7
|
[
|
@@ -15,7 +15,7 @@ namespace :usda do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def download_and_import(importer_name)
|
18
|
-
UsdaNutrientDatabase::Import::Downloader.new('tmp/usda', '
|
18
|
+
UsdaNutrientDatabase::Import::Downloader.new('tmp/usda', 'sr26').
|
19
19
|
tap do |downloader|
|
20
20
|
downloader.download_and_unzip
|
21
21
|
"UsdaNutrientDatabase::Import::#{importer_name}".constantize.
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: usda-nutrient-database
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Beedle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -215,6 +215,7 @@ files:
|
|
215
215
|
- db/migrate/5_create_usda_weights.rb
|
216
216
|
- db/migrate/6_create_usda_footnotes.rb
|
217
217
|
- db/migrate/7_create_usda_source_codes.rb
|
218
|
+
- db/migrate/8_add_timestamps_to_all_tables.rb
|
218
219
|
- lib/usda-nutrient-database.rb
|
219
220
|
- lib/usda_nutrient_database/configuration.rb
|
220
221
|
- lib/usda_nutrient_database/engine.rb
|
@@ -287,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
287
288
|
version: '0'
|
288
289
|
requirements: []
|
289
290
|
rubyforge_project:
|
290
|
-
rubygems_version: 2.2.
|
291
|
+
rubygems_version: 2.2.2
|
291
292
|
signing_key:
|
292
293
|
specification_version: 4
|
293
294
|
summary: A gem to include all the USDA nutrient data quickly into a ruby project
|