beerdb 0.8.2 → 0.9.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.
- data/README.md +8 -1
- data/Rakefile +2 -69
- data/lib/beerdb/models/beer.rb +9 -9
- data/lib/beerdb/models/bookmark.rb +5 -5
- data/lib/beerdb/models/brand.rb +7 -7
- data/lib/beerdb/models/brewery.rb +9 -9
- data/lib/beerdb/models/city.rb +7 -5
- data/lib/beerdb/models/country.rb +5 -6
- data/lib/beerdb/models/drink.rb +4 -4
- data/lib/beerdb/models/forward.rb +14 -12
- data/lib/beerdb/models/note.rb +4 -4
- data/lib/beerdb/models/region.rb +6 -6
- data/lib/beerdb/models/tag.rb +4 -5
- data/lib/beerdb/models/user.rb +3 -2
- data/lib/beerdb/reader.rb +15 -10
- data/lib/beerdb/serializers/beer.rb +2 -2
- data/lib/beerdb/serializers/brewery.rb +2 -2
- data/lib/beerdb/version.rb +3 -1
- data/lib/beerdb.rb +8 -2
- data/test/helper.rb +5 -5
- data/test/test_fixture_matchers.rb +14 -5
- data/test/test_values.rb +28 -27
- metadata +15 -15
data/README.md
CHANGED
@@ -119,6 +119,12 @@ Just install the gem:
|
|
119
119
|
$ gem install beerdb
|
120
120
|
|
121
121
|
|
122
|
+
## Free Open Public Domain Datasets
|
123
|
+
|
124
|
+
- [`beer.db`](https://github.com/openbeer) - free open public domain beer n brewery data for use in any (programming) language
|
125
|
+
|
126
|
+
|
127
|
+
|
122
128
|
## License
|
123
129
|
|
124
130
|
The `beerdb` scripts are dedicated to the public domain.
|
@@ -126,5 +132,6 @@ Use it as you please with no restrictions whatsoever.
|
|
126
132
|
|
127
133
|
## Questions? Comments?
|
128
134
|
|
129
|
-
Send them along to the [Open Beer & Brewery Database Forum/Mailing List](http://groups.google.com/group/beerdb).
|
135
|
+
Send them along to the [Open Beer & Brewery Database Forum/Mailing List](http://groups.google.com/group/beerdb).
|
136
|
+
Thanks!
|
130
137
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'hoe'
|
2
2
|
require './lib/beerdb/version.rb'
|
3
3
|
|
4
|
+
|
4
5
|
Hoe.spec 'beerdb' do
|
5
6
|
|
6
7
|
self.version = BeerDb::VERSION
|
@@ -21,8 +22,7 @@ Hoe.spec 'beerdb' do
|
|
21
22
|
['activerecord', '~> 3.2'], # NB: will include activesupport,etc.
|
22
23
|
### ['sqlite3', '~> 1.3'] # NB: install on your own; remove dependency
|
23
24
|
|
24
|
-
['worlddb', '~> 1.
|
25
|
-
# - commander
|
25
|
+
['worlddb', '~> 1.8'], # NB: worlddb already includes
|
26
26
|
# - logutils
|
27
27
|
# - textutils
|
28
28
|
|
@@ -38,70 +38,3 @@ Hoe.spec 'beerdb' do
|
|
38
38
|
|
39
39
|
end
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
##############################
|
44
|
-
## for testing
|
45
|
-
##
|
46
|
-
## NB: use rake -I ../world.db.ruby/lib -I ./lib beerdb:build
|
47
|
-
|
48
|
-
namespace :beerdb do
|
49
|
-
|
50
|
-
BUILD_DIR = "./build"
|
51
|
-
|
52
|
-
BEER_DB_PATH = "#{BUILD_DIR}/beer.db"
|
53
|
-
|
54
|
-
DB_CONFIG = {
|
55
|
-
:adapter => 'sqlite3',
|
56
|
-
:database => BEER_DB_PATH
|
57
|
-
}
|
58
|
-
|
59
|
-
directory BUILD_DIR
|
60
|
-
|
61
|
-
task :clean do
|
62
|
-
rm BEER_DB_PATH if File.exists?( BEER_DB_PATH )
|
63
|
-
end
|
64
|
-
|
65
|
-
task :env => BUILD_DIR do
|
66
|
-
require 'worlddb' ### NB: for local testing use rake -I ./lib dev:test e.g. do NOT forget to add -I ./lib
|
67
|
-
require 'beerdb'
|
68
|
-
require 'logutils/db'
|
69
|
-
|
70
|
-
LogUtils::Logger.root.level = :debug
|
71
|
-
|
72
|
-
pp DB_CONFIG
|
73
|
-
ActiveRecord::Base.establish_connection( DB_CONFIG )
|
74
|
-
end
|
75
|
-
|
76
|
-
task :create => :env do
|
77
|
-
LogDb.create
|
78
|
-
WorldDb.create
|
79
|
-
BeerDb.create
|
80
|
-
end
|
81
|
-
|
82
|
-
task :importworld => :env do
|
83
|
-
WorldDb.read_setup( 'setups/sport.db.admin', '../world.db', skip_tags: true ) # populate world tables
|
84
|
-
WorldDb.tables
|
85
|
-
end
|
86
|
-
|
87
|
-
task :importbeer => :env do
|
88
|
-
BeerDb.read_setup( 'setups/at', '../beer.db' )
|
89
|
-
BeerDb.tables
|
90
|
-
end
|
91
|
-
|
92
|
-
task :deletebeer => :env do
|
93
|
-
BeerDb.delete!
|
94
|
-
end
|
95
|
-
|
96
|
-
|
97
|
-
desc 'beerdb - build from scratch'
|
98
|
-
task :build => [:clean, :create, :importworld, :importbeer] do
|
99
|
-
puts 'Done.'
|
100
|
-
end
|
101
|
-
|
102
|
-
desc 'beerdb - update'
|
103
|
-
task :update => [:deletebeer, :importbeer] do
|
104
|
-
puts 'Done.'
|
105
|
-
end
|
106
|
-
|
107
|
-
end # namespace :beerdb
|
data/lib/beerdb/models/beer.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
module BeerDb::
|
3
|
+
module BeerDb::Model
|
4
4
|
|
5
5
|
class Beer < ActiveRecord::Base
|
6
6
|
|
@@ -10,15 +10,15 @@ class Beer < ActiveRecord::Base
|
|
10
10
|
# self.create_or_update_from_values
|
11
11
|
extend TextUtils::ValueHelper # e.g. self.is_year?, self.is_region?, self.is_address?, is_taglist? etc.
|
12
12
|
|
13
|
-
belongs_to :country, :class_name => 'WorldDb::
|
14
|
-
belongs_to :region, :class_name => 'WorldDb::
|
15
|
-
belongs_to :city, :class_name => 'WorldDb::
|
13
|
+
belongs_to :country, :class_name => 'WorldDb::Model::Country', :foreign_key => 'country_id'
|
14
|
+
belongs_to :region, :class_name => 'WorldDb::Model::Region', :foreign_key => 'region_id'
|
15
|
+
belongs_to :city, :class_name => 'WorldDb::Model::City', :foreign_key => 'city_id'
|
16
16
|
|
17
|
-
belongs_to :brand, :class_name => 'BeerDb::
|
18
|
-
belongs_to :brewery, :class_name => 'BeerDb::
|
17
|
+
belongs_to :brand, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'brand_id'
|
18
|
+
belongs_to :brewery, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'brewery_id'
|
19
19
|
|
20
|
-
has_many :taggings, :as => :taggable, :class_name => 'WorldDb::
|
21
|
-
has_many :tags, :through => :taggings, :class_name => 'WorldDb::
|
20
|
+
has_many :taggings, :as => :taggable, :class_name => 'WorldDb::Model::Tagging'
|
21
|
+
has_many :tags, :through => :taggings, :class_name => 'WorldDb::Model::Tag'
|
22
22
|
|
23
23
|
validates :key, :format => { :with => /^[a-z][a-z0-9]+$/, :message => 'expected two or more lowercase letters a-z or 0-9 digits' }
|
24
24
|
|
@@ -191,4 +191,4 @@ class Beer < ActiveRecord::Base
|
|
191
191
|
|
192
192
|
end # class Beer
|
193
193
|
|
194
|
-
end # module BeerDb::
|
194
|
+
end # module BeerDb::Model
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
module BeerDb::
|
3
|
+
module BeerDb::Model
|
4
4
|
|
5
5
|
class Bookmark < ActiveRecord::Base
|
6
6
|
|
@@ -10,22 +10,22 @@ class Bookmark < ActiveRecord::Base
|
|
10
10
|
|
11
11
|
### fix - how to do it with has_many macro? use finder_sql?
|
12
12
|
def drinks
|
13
|
-
## todo: check/assert bookmarkable_type == BeerDB::
|
13
|
+
## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
|
14
14
|
Drink.where( user_id: user_id, beer_id: bookmarkable_id )
|
15
15
|
end
|
16
16
|
|
17
17
|
def notes
|
18
|
-
## todo: check/assert bookmarkable_type == BeerDB::
|
18
|
+
## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
|
19
19
|
Note.where( user_id: user_id, beer_id: bookmarkable_id )
|
20
20
|
end
|
21
21
|
|
22
22
|
|
23
23
|
## todo: check: how to handle polymorphic best for getting beer for bookmarkable?
|
24
24
|
def beer
|
25
|
-
## todo: check/assert bookmarkable_type == BeerDB::
|
25
|
+
## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
|
26
26
|
Beer.find( bookmarkable_id )
|
27
27
|
end
|
28
28
|
|
29
29
|
end # class Bookmark
|
30
30
|
|
31
|
-
end # module BeerDb::
|
31
|
+
end # module BeerDb::Model
|
data/lib/beerdb/models/brand.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
module BeerDb::
|
3
|
+
module BeerDb::Model
|
4
4
|
|
5
5
|
class Brand < ActiveRecord::Base
|
6
6
|
|
7
7
|
# NB: use extend - is_<type>? become class methods e.g. self.is_<type>?
|
8
8
|
extend TextUtils::ValueHelper # e.g. self.find_key_n_title, self.is_year?, self.is_region?, is_address?, is_taglist? etc.
|
9
9
|
|
10
|
-
belongs_to :country, :class_name => 'WorldDb::
|
11
|
-
belongs_to :region, :class_name => 'WorldDb::
|
12
|
-
belongs_to :city, :class_name => 'WorldDb::
|
10
|
+
belongs_to :country, :class_name => 'WorldDb::Model::Country', :foreign_key => 'country_id'
|
11
|
+
belongs_to :region, :class_name => 'WorldDb::Model::Region', :foreign_key => 'region_id'
|
12
|
+
belongs_to :city, :class_name => 'WorldDb::Model::City', :foreign_key => 'city_id'
|
13
13
|
|
14
|
-
belongs_to :brewery, :class_name => 'BeerDb::
|
14
|
+
belongs_to :brewery, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'brewery_id'
|
15
15
|
|
16
|
-
has_many :beers, :class_name => 'BeerDb::
|
16
|
+
has_many :beers, :class_name => 'BeerDb::Model::Beer', :foreign_key => 'brand_id'
|
17
17
|
|
18
18
|
validates :key, :format => { :with => /^[a-z][a-z0-9]+$/, :message => 'expected two or more lowercase letters a-z or 0-9 digits' }
|
19
19
|
|
@@ -57,4 +57,4 @@ class Brand < ActiveRecord::Base
|
|
57
57
|
|
58
58
|
end # class Brand
|
59
59
|
|
60
|
-
end # module BeerDb::
|
60
|
+
end # module BeerDb::Model
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
module BeerDb::
|
3
|
+
module BeerDb::Model
|
4
4
|
|
5
5
|
class Brewery < ActiveRecord::Base
|
6
6
|
|
@@ -13,15 +13,15 @@ class Brewery < ActiveRecord::Base
|
|
13
13
|
|
14
14
|
self.table_name = 'breweries'
|
15
15
|
|
16
|
-
belongs_to :country, :class_name => 'WorldDb::
|
17
|
-
belongs_to :region, :class_name => 'WorldDb::
|
18
|
-
belongs_to :city, :class_name => 'WorldDb::
|
16
|
+
belongs_to :country, :class_name => 'WorldDb::Model::Country', :foreign_key => 'country_id'
|
17
|
+
belongs_to :region, :class_name => 'WorldDb::Model::Region', :foreign_key => 'region_id'
|
18
|
+
belongs_to :city, :class_name => 'WorldDb::Model::City', :foreign_key => 'city_id'
|
19
19
|
|
20
|
-
has_many :beers, :class_name => 'BeerDb::
|
21
|
-
has_many :brands, :class_name => 'BeerDb::
|
20
|
+
has_many :beers, :class_name => 'BeerDb::Model::Beer', :foreign_key => 'brewery_id'
|
21
|
+
has_many :brands, :class_name => 'BeerDb::Model::Brand', :foreign_key => 'brand_id'
|
22
22
|
|
23
|
-
has_many :taggings, :as => :taggable, :class_name => 'WorldDb::
|
24
|
-
has_many :tags, :through => :taggings, :class_name => 'WorldDb::
|
23
|
+
has_many :taggings, :as => :taggable, :class_name => 'WorldDb::Model::Tagging'
|
24
|
+
has_many :tags, :through => :taggings, :class_name => 'WorldDb::Model::Tag'
|
25
25
|
|
26
26
|
validates :key, :format => { :with => /^[a-z][a-z0-9]+$/, :message => 'expected two or more lowercase letters a-z or 0-9 digits' }
|
27
27
|
|
@@ -230,4 +230,4 @@ class Brewery < ActiveRecord::Base
|
|
230
230
|
end # class Brewery
|
231
231
|
|
232
232
|
|
233
|
-
end # module BeerDb::
|
233
|
+
end # module BeerDb::Model
|
data/lib/beerdb/models/city.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
module WorldDb::
|
1
|
+
module WorldDb::Model
|
2
2
|
|
3
3
|
class City
|
4
|
-
has_many :beers, :class_name => 'BeerDb::
|
5
|
-
has_many :brands, :class_name => 'BeerDb::
|
6
|
-
has_many :breweries, :class_name => 'BeerDb::
|
4
|
+
has_many :beers, :class_name => 'BeerDb::Model::Beer', :foreign_key => 'city_id'
|
5
|
+
has_many :brands, :class_name => 'BeerDb::Model::Brand', :foreign_key => 'city_id'
|
6
|
+
has_many :breweries, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'city_id'
|
7
7
|
end # class Country
|
8
8
|
|
9
|
-
end # module WorldDb::
|
9
|
+
end # module WorldDb::Model
|
10
|
+
|
11
|
+
|
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
module WorldDb::Models
|
1
|
+
module WorldDb::Model
|
3
2
|
|
4
3
|
class Country
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
has_many :beers, :class_name => 'BeerDb::Model::Beer', :foreign_key => 'country_id'
|
5
|
+
has_many :brands, :class_name => 'BeerDb::Model::Brand', :foreign_key => 'country_id'
|
6
|
+
has_many :breweries, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'country_id'
|
8
7
|
end # class Country
|
9
8
|
|
10
|
-
end # module WorldDb::
|
9
|
+
end # module WorldDb::Model
|
data/lib/beerdb/models/drink.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
module BeerDb::
|
3
|
+
module BeerDb::Model
|
4
4
|
|
5
5
|
class Drink < ActiveRecord::Base
|
6
6
|
|
7
|
-
belongs_to :beer, class_name: 'BeerDb::
|
8
|
-
belongs_to :user, class_name: 'BeerDb::
|
7
|
+
belongs_to :beer, class_name: 'BeerDb::Model::Beer'
|
8
|
+
belongs_to :user, class_name: 'BeerDb::Model::User'
|
9
9
|
|
10
10
|
before_save :on_before_save
|
11
11
|
|
@@ -19,4 +19,4 @@ class Drink < ActiveRecord::Base
|
|
19
19
|
|
20
20
|
end # class Drink
|
21
21
|
|
22
|
-
end # module BeerDb::
|
22
|
+
end # module BeerDb::Model
|
@@ -1,19 +1,20 @@
|
|
1
1
|
### forward references
|
2
2
|
## require first to resolve circular references
|
3
3
|
|
4
|
-
|
4
|
+
|
5
|
+
module BeerDb::Model
|
5
6
|
|
6
7
|
## todo: why? why not use include WorldDb::Models here???
|
7
8
|
|
8
|
-
Continent = WorldDb::
|
9
|
-
Country = WorldDb::
|
10
|
-
Region = WorldDb::
|
11
|
-
City = WorldDb::
|
9
|
+
Continent = WorldDb::Model::Continent
|
10
|
+
Country = WorldDb::Model::Country
|
11
|
+
Region = WorldDb::Model::Region
|
12
|
+
City = WorldDb::Model::City
|
12
13
|
|
13
|
-
Tag = WorldDb::
|
14
|
-
Tagging = WorldDb::
|
14
|
+
Tag = WorldDb::Model::Tag
|
15
|
+
Tagging = WorldDb::Model::Tagging
|
15
16
|
|
16
|
-
Prop = WorldDb::
|
17
|
+
Prop = WorldDb::Model::Prop
|
17
18
|
|
18
19
|
class Beer < ActiveRecord::Base ; end
|
19
20
|
class Brand < ActiveRecord::Base ; end
|
@@ -27,10 +28,11 @@ module BeerDb::Models
|
|
27
28
|
end
|
28
29
|
|
29
30
|
|
30
|
-
module WorldDb::
|
31
|
+
module WorldDb::Model
|
31
32
|
|
32
|
-
Beer = BeerDb::
|
33
|
-
Brand = BeerDb::
|
34
|
-
Brewery = BeerDb::
|
33
|
+
Beer = BeerDb::Model::Beer
|
34
|
+
Brand = BeerDb::Model::Brand
|
35
|
+
Brewery = BeerDb::Model::Brewery
|
35
36
|
|
36
37
|
end
|
38
|
+
|
data/lib/beerdb/models/note.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
module BeerDb::
|
3
|
+
module BeerDb::Model
|
4
4
|
|
5
5
|
class Note < ActiveRecord::Base
|
6
6
|
|
7
|
-
belongs_to :beer, class_name: 'BeerDb::
|
8
|
-
belongs_to :user, class_name: 'BeerDb::
|
7
|
+
belongs_to :beer, class_name: 'BeerDb::Model::Beer'
|
8
|
+
belongs_to :user, class_name: 'BeerDb::Model::User'
|
9
9
|
|
10
10
|
end # class Note
|
11
11
|
|
12
|
-
end # module BeerDb::
|
12
|
+
end # module BeerDb::Model
|
data/lib/beerdb/models/region.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
module WorldDb::Models
|
1
|
+
module WorldDb::Model
|
3
2
|
|
4
3
|
class Region
|
5
|
-
has_many :beers, :class_name => 'BeerDb::
|
6
|
-
has_many :brands, :class_name => 'BeerDb::
|
7
|
-
has_many :breweries, :class_name => 'BeerDb::
|
4
|
+
has_many :beers, :class_name => 'BeerDb::Model::Beer', :foreign_key => 'region_id'
|
5
|
+
has_many :brands, :class_name => 'BeerDb::Model::Brand', :foreign_key => 'region_id'
|
6
|
+
has_many :breweries, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'region_id'
|
8
7
|
end # class Region
|
9
8
|
|
10
|
-
end # module WorldDb::
|
9
|
+
end # module WorldDb::Model
|
10
|
+
|
data/lib/beerdb/models/tag.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
|
2
|
-
module WorldDb::Models
|
1
|
+
module WorldDb::Model
|
3
2
|
|
4
3
|
class Tag
|
5
|
-
has_many :beers, :through => :taggings, :source => :taggable, :source_type => 'BeerDb::
|
6
|
-
has_many :breweries, :through => :taggings, :source => :taggable, :source_type => 'BeerDb::
|
4
|
+
has_many :beers, :through => :taggings, :source => :taggable, :source_type => 'BeerDb::Model::Beer', :class_name => 'BeerDb::Model::Beer'
|
5
|
+
has_many :breweries, :through => :taggings, :source => :taggable, :source_type => 'BeerDb::Model::Brewery', :class_name => 'BeerDb::Model::Brewery'
|
7
6
|
end # class Country
|
8
7
|
|
9
|
-
end # module WorldDb::
|
8
|
+
end # module WorldDb::Model
|
data/lib/beerdb/models/user.rb
CHANGED
data/lib/beerdb/reader.rb
CHANGED
@@ -6,19 +6,19 @@ module BeerDb
|
|
6
6
|
module Matcher
|
7
7
|
|
8
8
|
def match_beers_for_country( name, &blk )
|
9
|
-
match_xxx_for_country( name, 'beers', blk )
|
9
|
+
match_xxx_for_country( name, 'beers', &blk )
|
10
10
|
end
|
11
11
|
|
12
12
|
def match_beers_for_country_n_region( name, &blk )
|
13
|
-
match_xxx_for_country_n_region( name, 'beers', blk )
|
13
|
+
match_xxx_for_country_n_region( name, 'beers', &blk )
|
14
14
|
end
|
15
15
|
|
16
16
|
def match_breweries_for_country( name, &blk )
|
17
|
-
match_xxx_for_country( name, 'breweries', blk )
|
17
|
+
match_xxx_for_country( name, 'breweries', &blk )
|
18
18
|
end
|
19
19
|
|
20
20
|
def match_breweries_for_country_n_region( name, &blk )
|
21
|
-
match_xxx_for_country_n_region( name, 'breweries', blk )
|
21
|
+
match_xxx_for_country_n_region( name, 'breweries', &blk )
|
22
22
|
end
|
23
23
|
|
24
24
|
end # module Matcher
|
@@ -30,7 +30,7 @@ class Reader
|
|
30
30
|
|
31
31
|
include BeerDb::Models
|
32
32
|
|
33
|
-
include WorldDb::Matcher
|
33
|
+
include WorldDb::Matcher ## fix: move to BeerDb::Matcher module ??? - cleaner?? why? why not?
|
34
34
|
include BeerDb::Matcher # lets us use match_teams_for_country etc.
|
35
35
|
|
36
36
|
attr_reader :include_path
|
@@ -151,12 +151,17 @@ class Reader
|
|
151
151
|
country = Country.find_by_key!( country_key )
|
152
152
|
logger.debug "Country #{country.key} >#{country.title} (#{country.code})<"
|
153
153
|
|
154
|
-
# NB: region lookup requires country id (region key only unique for country)
|
155
|
-
region = Region.find_by_key_and_country_id!( region_key, country.id )
|
156
|
-
logger.debug "Region #{region.key} >#{region.title}<"
|
157
|
-
|
158
154
|
more_attribs[ :country_id ] = country.id
|
159
|
-
|
155
|
+
|
156
|
+
# note: region lookup requires country id (region key only unique for country)
|
157
|
+
region = Region.find_by_key_and_country_id( region_key, country.id )
|
158
|
+
if region.nil?
|
159
|
+
# note: allow unknown region keys; issue warning n skip region
|
160
|
+
logger.warn "Region w/ key >#{region_key}< not found; skip adding region"
|
161
|
+
else
|
162
|
+
logger.debug "Region #{region.key} >#{region.title}<"
|
163
|
+
more_attribs[ :region_id ] = region.id
|
164
|
+
end
|
160
165
|
|
161
166
|
more_attribs[ :txt ] = name # store source ref
|
162
167
|
|
data/lib/beerdb/version.rb
CHANGED
data/lib/beerdb.rb
CHANGED
@@ -38,6 +38,12 @@ require 'beerdb/models/drink' # db model extensions - move to its own addon
|
|
38
38
|
require 'beerdb/models/bookmark' # db model extensions - move to its own addon gem?
|
39
39
|
require 'beerdb/models/note' # db model extensions - move to its own addon gem?
|
40
40
|
|
41
|
+
## add backwards compatible namespace (delete later!)
|
42
|
+
module BeerDb
|
43
|
+
Models = Model
|
44
|
+
end
|
45
|
+
|
46
|
+
|
41
47
|
require 'beerdb/serializers/beer'
|
42
48
|
require 'beerdb/serializers/brewery'
|
43
49
|
|
@@ -71,7 +77,7 @@ module BeerDb
|
|
71
77
|
CreateDbExtrasDrinks.new.up
|
72
78
|
CreateDbExtrasNotes.new.up
|
73
79
|
|
74
|
-
BeerDb::
|
80
|
+
BeerDb::Model::Prop.create!( key: 'db.schema.beer.version', value: VERSION )
|
75
81
|
end
|
76
82
|
|
77
83
|
|
@@ -79,7 +85,7 @@ module BeerDb
|
|
79
85
|
module CodeReaderContext
|
80
86
|
# make models available w/o namespace
|
81
87
|
# e.g. lets you use Beer instead of BeerDb::Models::Beer
|
82
|
-
include BeerDb::Models
|
88
|
+
include BeerDb::Models # check does it work w/ alias e.g. Models == Model
|
83
89
|
## <evaluated code here>
|
84
90
|
end
|
85
91
|
|
data/test/helper.rb
CHANGED
@@ -24,14 +24,14 @@ require 'active_record'
|
|
24
24
|
require 'beerdb'
|
25
25
|
require 'logutils/db' # NB: explict require required for LogDb (not automatic)
|
26
26
|
|
27
|
-
Country = WorldDb::
|
28
|
-
Region = WorldDb::
|
27
|
+
Country = WorldDb::Model::Country
|
28
|
+
Region = WorldDb::Model::Region
|
29
29
|
|
30
30
|
## todo: get all models aliases (e.g. from console script)
|
31
31
|
|
32
|
-
Beer = BeerDb::
|
33
|
-
Brand = BeerDb::
|
34
|
-
Brewery = BeerDb::
|
32
|
+
Beer = BeerDb::Model::Beer
|
33
|
+
Brand = BeerDb::Model::Brand
|
34
|
+
Brewery = BeerDb::Model::Brewery
|
35
35
|
|
36
36
|
|
37
37
|
def setup_in_memory_db
|
@@ -7,7 +7,8 @@ require 'helper'
|
|
7
7
|
|
8
8
|
class TestFixtureMatchers < MiniTest::Unit::TestCase
|
9
9
|
|
10
|
-
include
|
10
|
+
include WorldDb::Matcher
|
11
|
+
include BeerDb::Matcher
|
11
12
|
|
12
13
|
|
13
14
|
def test_country
|
@@ -16,7 +17,9 @@ class TestFixtureMatchers < MiniTest::Unit::TestCase
|
|
16
17
|
'europe/at/beers',
|
17
18
|
'europe/at-austria/beers',
|
18
19
|
'at-austria/beers',
|
19
|
-
'at-austria!/beers'
|
20
|
+
'at-austria!/beers',
|
21
|
+
'1--at-austria--central/beers',
|
22
|
+
'europe/1--at-austria--central/beers'
|
20
23
|
]
|
21
24
|
|
22
25
|
beers_at.each do |name|
|
@@ -30,7 +33,9 @@ class TestFixtureMatchers < MiniTest::Unit::TestCase
|
|
30
33
|
'europe/at/breweries',
|
31
34
|
'europe/at-austria/breweries',
|
32
35
|
'at-austria/breweries',
|
33
|
-
'at-austria!/breweries'
|
36
|
+
'at-austria!/breweries',
|
37
|
+
'1--at-austria--central/breweries',
|
38
|
+
'europe/1--at-austria--central/breweries'
|
34
39
|
]
|
35
40
|
|
36
41
|
breweries_at.each do |name|
|
@@ -47,7 +52,9 @@ class TestFixtureMatchers < MiniTest::Unit::TestCase
|
|
47
52
|
beers_at = [
|
48
53
|
'europe/at-austria/w-wien/beers',
|
49
54
|
'at-austria/w-wien/beers',
|
50
|
-
'at-austria!/w-wien/beers'
|
55
|
+
'at-austria!/w-wien/beers',
|
56
|
+
'1--at-austria--central/1--w-wien--eastern/beers',
|
57
|
+
'europe/1--at-austria--central/1--w-wien--eastern/beers'
|
51
58
|
]
|
52
59
|
|
53
60
|
beers_at.each do |name|
|
@@ -61,7 +68,9 @@ class TestFixtureMatchers < MiniTest::Unit::TestCase
|
|
61
68
|
breweries_at = [
|
62
69
|
'europe/at-austria/w-wien/breweries',
|
63
70
|
'at-austria/w-wien/breweries',
|
64
|
-
'at-austria!/w-wien/breweries'
|
71
|
+
'at-austria!/w-wien/breweries',
|
72
|
+
'1--at-austria--central/1--w-wien--eastern/breweries',
|
73
|
+
'europe/1--at-austria--central/1--w-wien--eastern/breweries'
|
65
74
|
]
|
66
75
|
|
67
76
|
breweries_at.each do |name|
|
data/test/test_values.rb
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
require 'helper'
|
10
10
|
|
11
|
+
|
11
12
|
class TestValues < MiniTest::Unit::TestCase
|
12
13
|
|
13
14
|
def setup
|
@@ -33,14 +34,14 @@ class TestValues < MiniTest::Unit::TestCase
|
|
33
34
|
beer = Beer.create_or_update_from_values( values, more_attribs )
|
34
35
|
|
35
36
|
beer2 = Beer.find_by_key!( key )
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
37
|
+
assert_equal beer.id, beer2.id
|
38
|
+
|
39
|
+
assert_equal beer.title, values[0]
|
40
|
+
assert_equal beer.country_id, AT.id
|
41
|
+
assert_equal beer.country.title, AT.title
|
42
|
+
assert_equal beer.abv, 5.2
|
43
|
+
assert_equal beer.og, 11.8
|
44
|
+
assert_equal beer.srm, nil
|
44
45
|
end
|
45
46
|
|
46
47
|
def test_load_brewery_values
|
@@ -67,24 +68,24 @@ class TestValues < MiniTest::Unit::TestCase
|
|
67
68
|
by = Brewery.create_or_update_from_values( values, more_attribs )
|
68
69
|
|
69
70
|
by2 = Brewery.find_by_key!( key )
|
70
|
-
|
71
|
+
assert_equal by.id, by2.id
|
71
72
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
73
|
+
assert_equal by.title, values[1]
|
74
|
+
assert_equal by.country_id, AT.id
|
75
|
+
assert_equal by.country.title, AT.title
|
76
|
+
assert_equal by.since, 1838
|
77
|
+
assert_equal by.web, 'www.ottakringer.at'
|
78
|
+
assert_equal by.address, '1160 Wien // Ottakringer Platz 1'
|
79
|
+
assert_equal by.grade, 4
|
79
80
|
|
80
81
|
# check auto-created brand
|
81
82
|
|
82
83
|
br = Brand.find_by_key!( 'ottakringer')
|
83
84
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
85
|
+
assert_equal br.title, 'Ottakringer'
|
86
|
+
assert_equal br.brewery_id, by.id
|
87
|
+
assert_equal br.brewery.title, by.title
|
88
|
+
assert_equal br.country_id, by.country_id
|
88
89
|
end
|
89
90
|
|
90
91
|
|
@@ -111,10 +112,10 @@ class TestValues < MiniTest::Unit::TestCase
|
|
111
112
|
by = Brewery.create_or_update_from_values( values, more_attribs )
|
112
113
|
|
113
114
|
by2 = Brewery.find_by_key!( key )
|
114
|
-
|
115
|
+
assert_equal by.id, by2.id
|
115
116
|
|
116
|
-
|
117
|
-
|
117
|
+
assert_equal by.title, 'Ottakringer Brauerei'
|
118
|
+
assert_equal by.grade, 2
|
118
119
|
end
|
119
120
|
|
120
121
|
def test_load_brewery_values_w_grade_in_synonyms
|
@@ -143,11 +144,11 @@ class TestValues < MiniTest::Unit::TestCase
|
|
143
144
|
by = Brewery.create_or_update_from_values( values, more_attribs )
|
144
145
|
|
145
146
|
by2 = Brewery.find_by_key!( key )
|
146
|
-
|
147
|
+
assert_equal by.id, by2.id
|
147
148
|
|
148
|
-
|
149
|
-
|
150
|
-
|
149
|
+
assert_equal by.title, 'Ottakringer Brauerei'
|
150
|
+
assert_equal by.synonyms, 'Otta'
|
151
|
+
assert_equal by.grade, 2
|
151
152
|
end
|
152
153
|
|
153
154
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beerdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-01-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &21954864 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,21 +21,21 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *21954864
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: worlddb
|
27
|
-
requirement: &
|
27
|
+
requirement: &21954264 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '1.
|
32
|
+
version: '1.8'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *21954264
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: gli
|
38
|
-
requirement: &
|
38
|
+
requirement: &21953868 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.5.6
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *21953868
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &21953472 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,18 +54,18 @@ dependencies:
|
|
54
54
|
version: '4.0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *21953472
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: hoe
|
60
|
-
requirement: &
|
60
|
+
requirement: &21953076 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: '3.
|
65
|
+
version: '3.7'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *21953076
|
69
69
|
description: beerdb - beer.db command line tool
|
70
70
|
email: beerdb@googlegroups.com
|
71
71
|
executables:
|
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
138
|
version: '0'
|
139
139
|
requirements: []
|
140
140
|
rubyforge_project: beerdb
|
141
|
-
rubygems_version: 1.
|
141
|
+
rubygems_version: 1.8.16
|
142
142
|
signing_key:
|
143
143
|
specification_version: 3
|
144
144
|
summary: beerdb - beer.db command line tool
|