beerdb 0.3.0 → 0.4.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/lib/beerdb/cli/main.rb +25 -0
- data/lib/beerdb/models/beer.rb +19 -1
- data/lib/beerdb/models/brewery.rb +11 -1
- data/lib/beerdb/reader.rb +4 -4
- data/lib/beerdb/schema.rb +16 -3
- data/lib/beerdb/server.rb +35 -6
- data/lib/beerdb/version.rb +1 -1
- metadata +12 -12
data/lib/beerdb/cli/main.rb
CHANGED
@@ -157,6 +157,31 @@ command :load do |c|
|
|
157
157
|
end # command load
|
158
158
|
|
159
159
|
|
160
|
+
## fix/todo: add server alias (serve/server)
|
161
|
+
|
162
|
+
command :serve do |c|
|
163
|
+
## todo: how to specify many fixutes <>... ??? in syntax
|
164
|
+
c.syntax = 'beerdb serve [options]'
|
165
|
+
c.description = 'Start web service (HTTP JSON API)'
|
166
|
+
|
167
|
+
c.action do |args, options|
|
168
|
+
|
169
|
+
LogUtils::Logger.root.level = :warn if options.quiet.present?
|
170
|
+
LogUtils::Logger.root.level = :debug if options.verbose.present?
|
171
|
+
|
172
|
+
myopts.merge_commander_options!( options.__hash__ )
|
173
|
+
connect_to_db( myopts )
|
174
|
+
|
175
|
+
# NB: server (HTTP service) not included in standard default require
|
176
|
+
require 'beerdb/server'
|
177
|
+
|
178
|
+
BeerDb::Server.run!
|
179
|
+
|
180
|
+
puts 'Done.'
|
181
|
+
end
|
182
|
+
end # command load
|
183
|
+
|
184
|
+
|
160
185
|
command :stats do |c|
|
161
186
|
c.syntax = 'beerdb stats [options]'
|
162
187
|
c.description = 'Show stats'
|
data/lib/beerdb/models/beer.rb
CHANGED
@@ -11,8 +11,26 @@ class Beer < ActiveRecord::Base
|
|
11
11
|
has_many :taggings, :as => :taggable, :class_name => 'WorldDb::Models::Tagging'
|
12
12
|
has_many :tags, :through => :taggings, :class_name => 'WorldDb::Models::Tag'
|
13
13
|
|
14
|
+
|
15
|
+
### support old names (read-only) for now (remove later)
|
16
|
+
|
17
|
+
def color
|
18
|
+
srm
|
19
|
+
end
|
20
|
+
|
21
|
+
def plato
|
22
|
+
og
|
23
|
+
end
|
24
|
+
|
25
|
+
def color=(value)
|
26
|
+
self.srm = value
|
27
|
+
end
|
28
|
+
|
29
|
+
def plato=(value)
|
30
|
+
self.og = value
|
31
|
+
end
|
32
|
+
|
14
33
|
end # class Beer
|
15
34
|
|
16
35
|
|
17
36
|
end # module BeerDb::Models
|
18
|
-
|
@@ -13,8 +13,18 @@ class Brewery < ActiveRecord::Base
|
|
13
13
|
has_many :taggings, :as => :taggable, :class_name => 'WorldDb::Models::Tagging'
|
14
14
|
has_many :tags, :through => :taggings, :class_name => 'WorldDb::Models::Tag'
|
15
15
|
|
16
|
+
### support old names (read-only) for now (remove later)
|
17
|
+
|
18
|
+
def founded
|
19
|
+
since
|
20
|
+
end
|
21
|
+
|
22
|
+
def founded=(value)
|
23
|
+
self.since = value
|
24
|
+
end
|
25
|
+
|
26
|
+
|
16
27
|
end # class Brewery
|
17
28
|
|
18
29
|
|
19
30
|
end # module BeerDb::Models
|
20
|
-
|
data/lib/beerdb/reader.rb
CHANGED
@@ -173,7 +173,7 @@ private
|
|
173
173
|
attribs[ :region_id ] = value_city.region.id
|
174
174
|
end
|
175
175
|
elsif value =~ /^[0-9]{4}$/ # founded/established year e.g. 1776
|
176
|
-
attribs[ :
|
176
|
+
attribs[ :since ] = value.to_i
|
177
177
|
elsif value =~ /\/{2}/ # if value includes // assume address e.g. 3970 Weitra // Sparkasseplatz 160
|
178
178
|
attribs[ :address ] = value
|
179
179
|
elsif (values.size==(index+1)) && value =~ /^[a-z0-9\|_ ]+$/ # tags must be last entry
|
@@ -303,15 +303,15 @@ private
|
|
303
303
|
elsif value_brewery.region.present?
|
304
304
|
attribs[ :region_id ] = value_brewery.region.id
|
305
305
|
end
|
306
|
-
|
306
|
+
|
307
307
|
elsif value =~ /^<?\s*(\d+(?:\.\d+)?)\s*%$/ ## abv (alcohol by volumee)
|
308
308
|
## nb: allow leading < e.g. <0.5%
|
309
309
|
value_abv_str = $1.dup # convert to decimal? how? use float?
|
310
310
|
attribs[ :abv ] = value_abv_str
|
311
311
|
elsif value =~ /^(\d+(?:\.\d+)?)°$/ ## plato (stammwuerze/gravity?) e.g. 11.2°
|
312
312
|
## nb: no whitespace allowed between ° and number e.g. 11.2°
|
313
|
-
|
314
|
-
attribs[ :
|
313
|
+
value_og_str = $1.dup # convert to decimal? how? use float?
|
314
|
+
attribs[ :og ] = value_og_str
|
315
315
|
elsif value =~ /^(\d+(?:\.\d+)?)\s*kcal(?:\/100ml)?$/ ## kcal
|
316
316
|
## nb: allow 44.4 kcal/100ml or 44.4 kcal or 44.4kcal
|
317
317
|
value_kcal_str = $1.dup # convert to decimal? how? use float?
|
data/lib/beerdb/schema.rb
CHANGED
@@ -12,6 +12,9 @@ create_table :beers do |t|
|
|
12
12
|
t.string :title, :null => false
|
13
13
|
t.string :synonyms # comma separated list of synonyms
|
14
14
|
|
15
|
+
t.string :web # optional url link (e.g. )
|
16
|
+
t.integer :since # optional year (e.g. 1896)
|
17
|
+
|
15
18
|
t.boolean :bottle, :null => false, :default => false # Flaschenbier
|
16
19
|
t.boolean :draft, :null => false, :default => false # Fassbier
|
17
20
|
## todo: check seasonal is it proper english?
|
@@ -24,8 +27,14 @@ create_table :beers do |t|
|
|
24
27
|
|
25
28
|
## check: why decimal and not float?
|
26
29
|
t.decimal :abv # Alcohol by volume (abbreviated as ABV, abv, or alc/vol) e.g. 4.9 %
|
27
|
-
t.decimal :
|
28
|
-
t.integer :
|
30
|
+
t.decimal :og
|
31
|
+
t.integer :srm
|
32
|
+
|
33
|
+
### fix/todo: add bitterness field
|
34
|
+
|
35
|
+
# renamed - old field names
|
36
|
+
## t.decimal :plato # stammwuerze / gravity in plato scale (e.g. °P) e.g. 12.6° - todo: use a different field name e.g. just p or gravity?
|
37
|
+
## t.integer :color # beer color in Standard Reference Method (SRM)
|
29
38
|
|
30
39
|
# see en.wikipedia.org/wiki/Plato_scale#Colour
|
31
40
|
|
@@ -60,7 +69,11 @@ create_table :breweries do |t|
|
|
60
69
|
t.string :title, :null => false
|
61
70
|
t.string :synonyms # comma separated list of synonyms
|
62
71
|
t.string :address
|
63
|
-
t.
|
72
|
+
t.string :since
|
73
|
+
## renamed to founded to since
|
74
|
+
## t.integer :founded # year founded/established - todo/fix: rename to since?
|
75
|
+
|
76
|
+
t.string :web # optional web page (e.g. www.ottakringer.at)
|
64
77
|
|
65
78
|
t.references :country, :null => false
|
66
79
|
t.references :region # optional
|
data/lib/beerdb/server.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# e.g. config.ru:
|
5
5
|
# require './boot'
|
6
|
-
# run
|
6
|
+
# run BeerDb::Server
|
7
7
|
|
8
8
|
|
9
9
|
# 3rd party libs/gems
|
@@ -68,11 +68,25 @@ class Server < Sinatra::Base
|
|
68
68
|
|
69
69
|
brewery = {}
|
70
70
|
if beer.brewery.present?
|
71
|
-
brewery = { key: beer.brewery.key,
|
71
|
+
brewery = { key: beer.brewery.key,
|
72
|
+
title: beer.brewery.title }
|
72
73
|
end
|
73
74
|
|
74
|
-
|
75
|
-
|
75
|
+
tags = []
|
76
|
+
if beer.tags.present?
|
77
|
+
beer.tags.each { |tag| tags << tag.key }
|
78
|
+
end
|
79
|
+
|
80
|
+
country = {
|
81
|
+
key: beer.country.key,
|
82
|
+
title: beer.country.title
|
83
|
+
}
|
84
|
+
|
85
|
+
data = { beer: { key: beer.key, title: beer.title, synonyms: beer.synonyms,
|
86
|
+
abv: beer.abv, srm: beer.srm, og: beer.og,
|
87
|
+
tags: tags,
|
88
|
+
brewery: brewery,
|
89
|
+
country: country }}
|
76
90
|
|
77
91
|
json_or_jsonp( data )
|
78
92
|
end
|
@@ -83,10 +97,25 @@ class Server < Sinatra::Base
|
|
83
97
|
|
84
98
|
beers = []
|
85
99
|
brewery.beers.each do |b|
|
86
|
-
beers << { key: b.key, title: b.title
|
100
|
+
beers << { key: b.key, title: b.title }
|
101
|
+
end
|
102
|
+
|
103
|
+
tags = []
|
104
|
+
if brewery.tags.present?
|
105
|
+
brewery.tags.each { |tag| tags << tag.key }
|
87
106
|
end
|
88
107
|
|
89
|
-
|
108
|
+
country = {
|
109
|
+
key: brewery.country.key,
|
110
|
+
title: brewery.country.title
|
111
|
+
}
|
112
|
+
|
113
|
+
data = { brewery: { key: brewery.key, title: brewery.title, synonyms: brewery.synonyms,
|
114
|
+
since: brewery.since,
|
115
|
+
address: brewery.address,
|
116
|
+
tags: tags,
|
117
|
+
beers: beers,
|
118
|
+
country: country }}
|
90
119
|
|
91
120
|
json_or_jsonp( data )
|
92
121
|
end
|
data/lib/beerdb/version.rb
CHANGED
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.4.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: 2013-04-
|
12
|
+
date: 2013-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &76799030 !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: *76799030
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: worlddb
|
27
|
-
requirement: &
|
27
|
+
requirement: &76798810 !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: *76798810
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: commander
|
38
|
-
requirement: &
|
38
|
+
requirement: &76798590 !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: *76798590
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &76798370 !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: *76798370
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: hoe
|
60
|
-
requirement: &
|
60
|
+
requirement: &76798150 !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: *76798150
|
69
69
|
description: beerdb - beer.db command line tool
|
70
70
|
email: tobedone@googlegroups.com
|
71
71
|
executables:
|