beerdb 0.8.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|