beerdb 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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'
@@ -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[ :founded ] = value.to_i
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
- value_plato_str = $1.dup # convert to decimal? how? use float?
314
- attribs[ :plato ] = value_plato_str
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 :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?
28
- t.integer :color # beer color in Standard Reference Method (SRM)
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.integer :founded # year founded/established
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 LogDb::Server
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, title: beer.brewery.title }
71
+ brewery = { key: beer.brewery.key,
72
+ title: beer.brewery.title }
72
73
  end
73
74
 
74
- data = { beer: { key: beer.key, title: beer.title, abv: beer.abv, srm: beer.color, og: beer.plato },
75
- brewery: brewery }
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
- data = { brewery: { key: brewery.key, title: brewery.title }, beers: beers }
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
@@ -1,4 +1,4 @@
1
1
 
2
2
  module BeerDb
3
- VERSION = '0.3.0'
3
+ VERSION = '0.4.0'
4
4
  end
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.3.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-07 00:00:00.000000000 Z
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: &75206180 !ruby/object:Gem::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: *75206180
24
+ version_requirements: *76799030
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: worlddb
27
- requirement: &75205960 !ruby/object:Gem::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: *75205960
35
+ version_requirements: *76798810
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: commander
38
- requirement: &75205740 !ruby/object:Gem::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: *75205740
46
+ version_requirements: *76798590
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc
49
- requirement: &75205520 !ruby/object:Gem::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: *75205520
57
+ version_requirements: *76798370
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hoe
60
- requirement: &75205300 !ruby/object:Gem::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: *75205300
68
+ version_requirements: *76798150
69
69
  description: beerdb - beer.db command line tool
70
70
  email: tobedone@googlegroups.com
71
71
  executables: