beerdb 0.6.8 → 0.6.9
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/.gemtest +0 -0
- data/lib/beerdb/models/beer.rb +2 -0
- data/lib/beerdb/models/brewery.rb +2 -0
- data/lib/beerdb/reader.rb +39 -8
- data/lib/beerdb/server.rb +2 -2
- data/lib/beerdb/server/views/index.erb +19 -19
- data/lib/beerdb/version.rb +1 -1
- data/test/test_values.rb +88 -0
- metadata +16 -13
data/.gemtest
ADDED
File without changes
|
data/lib/beerdb/models/beer.rb
CHANGED
data/lib/beerdb/reader.rb
CHANGED
@@ -32,18 +32,33 @@ class Reader
|
|
32
32
|
def load( name )
|
33
33
|
|
34
34
|
if name =~ /\/([a-z]{2})\/beers/
|
35
|
-
|
36
|
-
|
35
|
+
# classic style: e.g. /at/beers
|
36
|
+
# auto-add required country code (from folder structure)
|
37
|
+
load_beers_for_country( $1, name )
|
38
|
+
elsif name =~ /\/([a-z]{2})-[^\/]+\/([a-z]{1,2})-[^\/]+\/beers/
|
39
|
+
# new style: e.g. /at-austria/w-wien/beers
|
40
|
+
# auto-add required country n region code (from folder structure)
|
41
|
+
load_beers_for_country_n_region( $1, $2, name )
|
42
|
+
elsif name =~ /\/([a-z]{2})-[^\/]+\/beers/
|
43
|
+
# new style: e.g. /at-austria/beers
|
44
|
+
# auto-add required country code (from folder structure)
|
45
|
+
load_beers_for_country( $1, name )
|
37
46
|
elsif name =~ /\.hl$/ # e.g. breweries.hl # NB: must end w/ .hl
|
38
47
|
load_brewery_prod( name )
|
39
48
|
elsif name =~ /\/([a-z]{2})\.wikipedia/ # e.g. de.wikipedia
|
40
49
|
# auto-add required lang e.g. de or en etc.
|
41
50
|
load_brewery_wiki( $1, name )
|
42
|
-
elsif name =~ /\/([a-z]{2})
|
43
|
-
|
51
|
+
elsif name =~ /\/([a-z]{2})-[^\/]+\/([a-z]{1,2})-[^\/]+\/breweries/
|
52
|
+
# new style: e.g. /at-austria/w-wien/breweries
|
53
|
+
# auto-add required country n region code (from folder structure)
|
44
54
|
load_breweries_for_country_n_region( $1, $2, name )
|
55
|
+
elsif name =~ /\/([a-z]{2})-[^\/]+\/breweries/
|
56
|
+
# new style: e.g. /at-austria/breweries
|
57
|
+
# auto-add required country (from folder structure)
|
58
|
+
load_breweries_for_country( $1, name )
|
45
59
|
elsif name =~ /\/([a-z]{2})\/breweries/
|
46
|
-
|
60
|
+
# classic style: e.g. /at/breweries
|
61
|
+
# auto-add required country code (from folder structure)
|
47
62
|
load_breweries_for_country( $1, name )
|
48
63
|
else
|
49
64
|
logger.error "unknown beer.db fixture type >#{name}<"
|
@@ -94,12 +109,30 @@ class Reader
|
|
94
109
|
Prop.create_from_fixture!( name, path )
|
95
110
|
end
|
96
111
|
|
97
|
-
def
|
112
|
+
def load_beers_for_country_n_region( country_key, region_key, name, more_values={} )
|
98
113
|
country = Country.find_by_key!( country_key )
|
99
114
|
logger.debug "Country #{country.key} >#{country.title} (#{country.code})<"
|
100
115
|
|
116
|
+
# NB: region lookup requires country id (region key only unique for country)
|
117
|
+
region = Region.find_by_key_and_country_id!( region_key, country.id )
|
118
|
+
logger.debug "Region #{region.key} >#{region.title}<"
|
119
|
+
|
101
120
|
more_values[ :country_id ] = country.id
|
121
|
+
more_values[ :region_id ] = region.id
|
122
|
+
|
123
|
+
load_beers_worker( name, more_values )
|
124
|
+
end
|
102
125
|
|
126
|
+
def load_beers_for_country( country_key, name, more_values={} )
|
127
|
+
country = Country.find_by_key!( country_key )
|
128
|
+
logger.debug "Country #{country.key} >#{country.title} (#{country.code})<"
|
129
|
+
|
130
|
+
more_values[ :country_id ] = country.id
|
131
|
+
|
132
|
+
load_beers_worker( name, more_values )
|
133
|
+
end
|
134
|
+
|
135
|
+
def load_beers( name, more_values={} )
|
103
136
|
path = "#{include_path}/#{name}.txt"
|
104
137
|
|
105
138
|
logger.info "parsing data '#{name}' (#{path})..."
|
@@ -128,7 +161,6 @@ class Reader
|
|
128
161
|
load_breweries_worker( name, more_values )
|
129
162
|
end
|
130
163
|
|
131
|
-
|
132
164
|
def load_breweries_for_country( country_key, name, more_values={} )
|
133
165
|
country = Country.find_by_key!( country_key )
|
134
166
|
logger.debug "Country #{country.key} >#{country.title} (#{country.code})<"
|
@@ -138,7 +170,6 @@ class Reader
|
|
138
170
|
load_breweries_worker( name, more_values )
|
139
171
|
end
|
140
172
|
|
141
|
-
|
142
173
|
def load_breweries_worker( name, more_values={} )
|
143
174
|
path = "#{include_path}/#{name}.txt"
|
144
175
|
|
data/lib/beerdb/server.rb
CHANGED
@@ -72,7 +72,7 @@ class Server < Sinatra::Base
|
|
72
72
|
|
73
73
|
if ['r', 'rnd', 'rand', 'random'].include?( key )
|
74
74
|
# special key for random beer
|
75
|
-
beer = Beer.rnd
|
75
|
+
beer = Beer.rnd.first
|
76
76
|
else
|
77
77
|
beer = Beer.find_by_key!( key )
|
78
78
|
end
|
@@ -107,7 +107,7 @@ class Server < Sinatra::Base
|
|
107
107
|
|
108
108
|
if ['r', 'rnd', 'rand', 'random'].include?( key )
|
109
109
|
# special key for random brewery
|
110
|
-
brewery = Brewery.rnd
|
110
|
+
brewery = Brewery.rnd.first
|
111
111
|
else
|
112
112
|
brewery = Brewery.find_by_key!( key )
|
113
113
|
end
|
@@ -3,20 +3,6 @@
|
|
3
3
|
|
4
4
|
<h2>Examples</h2>
|
5
5
|
|
6
|
-
<h3>Get random beer <code>/beer/rand</code></h3>
|
7
|
-
|
8
|
-
<table>
|
9
|
-
<tr>
|
10
|
-
<td>
|
11
|
-
<code>
|
12
|
-
<a href='<%= url("/beer/rand") %>'>
|
13
|
-
/beer/<span class='params'>rand</span>
|
14
|
-
</a>
|
15
|
-
</code>
|
16
|
-
</td>
|
17
|
-
</tr>
|
18
|
-
</table>
|
19
|
-
|
20
6
|
<h3>Get beer by key <code>/beer/<span class='params'>:key</span></code></h3>
|
21
7
|
|
22
8
|
<table>
|
@@ -82,21 +68,21 @@
|
|
82
68
|
|
83
69
|
</table>
|
84
70
|
|
85
|
-
|
86
|
-
<h3>Get random brewery <code>/brewery/rand</code></h3>
|
71
|
+
<h3>Get random beer <code>/beer/<span class='params'>rand</span></code></h3>
|
87
72
|
|
88
73
|
<table>
|
89
74
|
<tr>
|
90
75
|
<td>
|
91
76
|
<code>
|
92
|
-
<a href='<%= url("/
|
93
|
-
/
|
77
|
+
<a href='<%= url("/beer/rand") %>'>
|
78
|
+
/beer/<span class='params'>rand</span>
|
94
79
|
</a>
|
95
80
|
</code>
|
96
81
|
</td>
|
97
82
|
</tr>
|
98
83
|
</table>
|
99
84
|
|
85
|
+
|
100
86
|
<h3>Get brewery by key <code>/brewery/<span class='params'>:key</span></code></h3>
|
101
87
|
|
102
88
|
<table>
|
@@ -113,7 +99,7 @@
|
|
113
99
|
<tr>
|
114
100
|
<td>
|
115
101
|
<code>
|
116
|
-
<a href='<%= url("/brewery/
|
102
|
+
<a href='<%= url("/brewery/fuller") %>'>
|
117
103
|
/brewery/<span class='params'>fullers</span>
|
118
104
|
</a>
|
119
105
|
</code>
|
@@ -152,5 +138,19 @@
|
|
152
138
|
|
153
139
|
</table>
|
154
140
|
|
141
|
+
<h3>Get random brewery <code>/brewery/<span class='params'>rand</span></code></h3>
|
142
|
+
|
143
|
+
<table>
|
144
|
+
<tr>
|
145
|
+
<td>
|
146
|
+
<code>
|
147
|
+
<a href='<%= url("/brewery/rand") %>'>
|
148
|
+
/brewery/<span class='params'>rand</span>
|
149
|
+
</a>
|
150
|
+
</code>
|
151
|
+
</td>
|
152
|
+
</tr>
|
153
|
+
</table>
|
154
|
+
|
155
155
|
|
156
156
|
<%= erb :'_debug' %>
|
data/lib/beerdb/version.rb
CHANGED
data/test/test_values.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_helper.rb
|
6
|
+
# or better
|
7
|
+
# rake test
|
8
|
+
|
9
|
+
require 'helper'
|
10
|
+
|
11
|
+
class TestValues < MiniTest::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
# delete all beers, brands, breweries in in-memory only db
|
15
|
+
BeerDb.delete!
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_load_beer_values
|
19
|
+
|
20
|
+
new_attributes = {
|
21
|
+
key: 'ottakringerpur',
|
22
|
+
title: 'Ottakringer (Gold Fassl) Pur {Bio}',
|
23
|
+
synonyms: '',
|
24
|
+
country_id: AT.id
|
25
|
+
}
|
26
|
+
|
27
|
+
values = [
|
28
|
+
'5.2 %',
|
29
|
+
'11.8°',
|
30
|
+
'bio'
|
31
|
+
]
|
32
|
+
|
33
|
+
beer = Beer.create_or_update_from_values( new_attributes, values )
|
34
|
+
|
35
|
+
beer2 = Beer.find_by_key!( new_attributes[:key] )
|
36
|
+
assert( beer.id == beer2.id )
|
37
|
+
|
38
|
+
assert( beer.title == new_attributes[:title] )
|
39
|
+
assert( beer.country_id == AT.id )
|
40
|
+
assert( beer.country.title == AT.title )
|
41
|
+
assert( beer.abv == 5.2 )
|
42
|
+
assert( beer.og == 11.8 )
|
43
|
+
assert( beer.srm == nil )
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_load_brewery_values
|
47
|
+
|
48
|
+
# ottakringer, Ottakringer Brauerei, 1838, www.ottakringer.at, WI, city:wien, 1160 Wien // Ottakringer Platz 1
|
49
|
+
# brands: Ottakringer
|
50
|
+
|
51
|
+
new_attributes = {
|
52
|
+
key: 'ottakringer',
|
53
|
+
title: 'Ottakringer Brauerei',
|
54
|
+
synonyms: '',
|
55
|
+
country_id: AT.id
|
56
|
+
}
|
57
|
+
|
58
|
+
values = [
|
59
|
+
'1838',
|
60
|
+
'www.ottakringer.at',
|
61
|
+
'1160 Wien // Ottakringer Platz 1',
|
62
|
+
'brands: Ottakringer'
|
63
|
+
]
|
64
|
+
|
65
|
+
by = Brewery.create_or_update_from_values( new_attributes, values )
|
66
|
+
|
67
|
+
by2 = Brewery.find_by_key!( new_attributes[:key] )
|
68
|
+
assert( by.id == by2.id )
|
69
|
+
|
70
|
+
assert( by.title == new_attributes[:title] )
|
71
|
+
assert( by.country_id == AT.id )
|
72
|
+
assert( by.country.title == AT.title )
|
73
|
+
assert( by.since == 1838 )
|
74
|
+
assert( by.web == 'www.ottakringer.at' )
|
75
|
+
assert( by.address == '1160 Wien // Ottakringer Platz 1' )
|
76
|
+
|
77
|
+
# check auto-created brand
|
78
|
+
|
79
|
+
br = Brand.find_by_key!( 'ottakringer')
|
80
|
+
|
81
|
+
assert( br.title == 'Ottakringer' )
|
82
|
+
assert( br.brewery_id == by.id )
|
83
|
+
assert( br.brewery.title == by.title )
|
84
|
+
assert( br.country_id == by.country_id )
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
end # class TestValues
|
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.6.
|
4
|
+
version: 0.6.9
|
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: 2013-05-
|
12
|
+
date: 2013-05-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &84206950 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *84206950
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: worlddb
|
27
|
-
requirement: &
|
27
|
+
requirement: &84206730 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.6'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *84206730
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: commander
|
38
|
-
requirement: &
|
38
|
+
requirement: &84206510 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 4.1.3
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *84206510
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &84206290 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '3.10'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *84206290
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: hoe
|
60
|
-
requirement: &
|
60
|
+
requirement: &84206070 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '3.3'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *84206070
|
69
69
|
description: beerdb - beer.db command line tool
|
70
70
|
email: beerdb@googlegroups.com
|
71
71
|
executables:
|
@@ -103,6 +103,8 @@ files:
|
|
103
103
|
- lib/beerdb/server/views/layout.erb
|
104
104
|
- lib/beerdb/stats.rb
|
105
105
|
- lib/beerdb/version.rb
|
106
|
+
- test/test_values.rb
|
107
|
+
- .gemtest
|
106
108
|
homepage: https://github.com/geraldb/beer.db.ruby
|
107
109
|
licenses:
|
108
110
|
- Public Domain
|
@@ -130,4 +132,5 @@ rubygems_version: 1.8.17
|
|
130
132
|
signing_key:
|
131
133
|
specification_version: 3
|
132
134
|
summary: beerdb - beer.db command line tool
|
133
|
-
test_files:
|
135
|
+
test_files:
|
136
|
+
- test/test_values.rb
|