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.
@@ -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: