beerdb 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +3 -14
- data/README.md +2 -2
- data/lib/beerdb/cli/main.rb +12 -6
- data/lib/beerdb/deleter.rb +8 -5
- data/lib/beerdb/models/beer.rb +4 -18
- data/lib/beerdb/models/brewery.rb +11 -14
- data/lib/beerdb/models/forward.rb +6 -5
- data/lib/beerdb/models/world/city.rb +14 -0
- data/lib/beerdb/models/{country.rb → world/country.rb} +0 -0
- data/lib/beerdb/models/world/region.rb +14 -0
- data/lib/beerdb/reader.rb +11 -5
- data/lib/beerdb/schema.rb +11 -104
- data/lib/beerdb/stats.rb +11 -12
- data/lib/beerdb/version.rb +15 -2
- data/lib/beerdb.rb +12 -184
- data/test/helper.rb +2 -11
- data/test/test_fixture_matchers.rb +0 -1
- metadata +27 -38
- data/lib/beerdb/models/bookmark.rb +0 -33
- data/lib/beerdb/models/city.rb +0 -14
- data/lib/beerdb/models/drink.rb +0 -25
- data/lib/beerdb/models/note.rb +0 -15
- data/lib/beerdb/models/region.rb +0 -14
- data/lib/beerdb/models/user.rb +0 -29
- data/lib/beerdb/server/public/style.css +0 -36
- data/lib/beerdb/server/views/_debug.erb +0 -17
- data/lib/beerdb/server/views/_version.erb +0 -7
- data/lib/beerdb/server/views/debug.erb +0 -3
- data/lib/beerdb/server/views/index.erb +0 -156
- data/lib/beerdb/server/views/layout.erb +0 -15
- data/lib/beerdb/server.rb +0 -248
data/lib/beerdb.rb
CHANGED
@@ -14,6 +14,8 @@ require 'logger'
|
|
14
14
|
require 'optparse'
|
15
15
|
require 'fileutils'
|
16
16
|
require 'erb'
|
17
|
+
require 'uri'
|
18
|
+
|
17
19
|
|
18
20
|
# 3rd party gems / libs
|
19
21
|
|
@@ -24,183 +26,19 @@ require 'erb'
|
|
24
26
|
|
25
27
|
require 'worlddb'
|
26
28
|
|
27
|
-
######################
|
28
|
-
# fix begin:
|
29
|
-
|
30
|
-
|
31
|
-
################
|
32
|
-
# todo: move module to textutils!!!
|
33
|
-
|
34
|
-
### fix: move to textutils??
|
35
|
-
|
36
|
-
|
37
|
-
## todo: rename to TitleHelpers? TitleMatcher? TitleMapper? TitleMapping? TitleMappings? TitleFinder? TitleHelpers?
|
38
|
-
# or rename to KeyMapping?, KeyMapper?, KeyTable? etc.
|
39
|
-
|
40
|
-
|
41
|
-
module TextUtils::TitleTable
|
42
|
-
|
43
|
-
|
44
|
-
def build_title_table_for( records )
|
45
|
-
## build known tracks table w/ synonyms e.g.
|
46
|
-
#
|
47
|
-
# [[ 'wolfsbrug', [ 'VfL Wolfsburg' ]],
|
48
|
-
# [ 'augsburg', [ 'FC Augsburg', 'Augi2', 'Augi3' ]],
|
49
|
-
# [ 'stuttgart', [ 'VfB Stuttgart' ]] ]
|
50
|
-
|
51
|
-
known_titles = []
|
52
|
-
|
53
|
-
records.each_with_index do |rec,index|
|
54
|
-
|
55
|
-
title_candidates = []
|
56
|
-
title_candidates << rec.title
|
57
|
-
|
58
|
-
title_candidates += rec.synonyms.split('|') if rec.synonyms.present?
|
59
|
-
|
60
|
-
|
61
|
-
## check if title includes subtitle e.g. Grand Prix Japan (Suzuka Circuit)
|
62
|
-
# make subtitle optional by adding title w/o subtitle e.g. Grand Prix Japan
|
63
|
-
|
64
|
-
titles = []
|
65
|
-
title_candidates.each do |t|
|
66
|
-
titles << t
|
67
|
-
if t =~ /\(.+\)/
|
68
|
-
extra_title = t.gsub( /\(.+\)/, '' ) # remove/delete subtitles
|
69
|
-
extra_title.strip! # strip leading n trailing withspaces too!
|
70
|
-
titles << extra_title
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
|
75
|
-
## NB: sort here by length (largest goes first - best match)
|
76
|
-
# exclude code and key (key should always go last)
|
77
|
-
titles = titles.sort { |left,right| right.length <=> left.length }
|
78
|
-
|
79
|
-
## escape for regex plus allow subs for special chars/accents
|
80
|
-
titles = titles.map { |title| TextUtils.title_esc_regex( title ) }
|
81
|
-
|
82
|
-
## NB: only include code field - if defined
|
83
|
-
titles << rec.code if rec.respond_to?(:code) && rec.code.present?
|
84
|
-
|
85
|
-
known_titles << [ rec.key, titles ]
|
86
|
-
|
87
|
-
### fix: use plain logger
|
88
|
-
LogUtils::Logger.root.debug " #{rec.class.name}[#{index+1}] #{rec.key} >#{titles.join('|')}<"
|
89
|
-
end
|
90
|
-
|
91
|
-
known_titles
|
92
|
-
end
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
def find_key_for!( name, line )
|
97
|
-
regex = /@@oo([^@]+?)oo@@/ # e.g. everything in @@ .... @@ (use non-greedy +? plus all chars but not @, that is [^@])
|
98
|
-
|
99
|
-
upcase_name = name.upcase
|
100
|
-
downcase_name = name.downcase
|
101
|
-
|
102
|
-
if line =~ regex
|
103
|
-
value = "#{$1}"
|
104
|
-
### fix: use plain logger
|
105
|
-
LogUtils::Logger.root.debug " #{downcase_name}: >#{value}<"
|
106
|
-
|
107
|
-
line.sub!( regex, "[#{upcase_name}]" )
|
108
|
-
|
109
|
-
return $1
|
110
|
-
else
|
111
|
-
return nil
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
|
116
|
-
def find_keys_for!( name, line ) # NB: keys (plural!) - will return array
|
117
|
-
counter = 1
|
118
|
-
keys = []
|
119
|
-
|
120
|
-
downcase_name = name.downcase
|
121
|
-
|
122
|
-
key = find_key_for!( "#{downcase_name}#{counter}", line )
|
123
|
-
while key.present?
|
124
|
-
keys << key
|
125
|
-
counter += 1
|
126
|
-
key = find_key_for!( "#{downcase_name}#{counter}", line )
|
127
|
-
end
|
128
|
-
|
129
|
-
keys
|
130
|
-
end
|
131
|
-
|
132
|
-
|
133
|
-
def map_titles_for!( name, line, title_table )
|
134
|
-
title_table.each do |rec|
|
135
|
-
key = rec[0]
|
136
|
-
values = rec[1]
|
137
|
-
map_title_worker_for!( name, line, key, values )
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
|
142
|
-
def map_title_worker_for!( name, line, key, values )
|
143
|
-
|
144
|
-
downcase_name = name.downcase
|
145
|
-
|
146
|
-
values.each do |value|
|
147
|
-
## nb: \b does NOT include space or newline for word boundry (only alphanums e.g. a-z0-9)
|
148
|
-
## (thus add it, allows match for Benfica Lis. for example - note . at the end)
|
149
|
-
|
150
|
-
## check add $ e.g. (\b| |\t|$) does this work? - check w/ Benfica Lis.$
|
151
|
-
regex = /\b#{value}(\b| |\t|$)/ # wrap with world boundry (e.g. match only whole words e.g. not wac in wacker)
|
152
|
-
if line =~ regex
|
153
|
-
### fix: use plain logger
|
154
|
-
LogUtils::Logger.root.debug " match for #{downcase_name} >#{key}< >#{value}<"
|
155
|
-
# make sure @@oo{key}oo@@ doesn't match itself with other key e.g. wacker, wac, etc.
|
156
|
-
line.sub!( regex, "@@oo#{key}oo@@ " ) # NB: add one space char at end
|
157
|
-
return true # break out after first match (do NOT continue)
|
158
|
-
end
|
159
|
-
end
|
160
|
-
return false
|
161
|
-
end
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
end # module TextUtils::TitleTable
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
## auto-include methods
|
170
|
-
|
171
|
-
module TextUtils
|
172
|
-
# make helpers available as class methods e.g. TextUtils.convert_unicode_dashes_to_plain_ascii
|
173
|
-
extend TitleTable # lets us use TextUtils.build_title_table_for etc.
|
174
|
-
end
|
175
|
-
|
176
|
-
# quich fix end:
|
177
|
-
########################
|
178
|
-
|
179
|
-
|
180
29
|
|
181
30
|
# our own code
|
182
31
|
|
183
32
|
require 'beerdb/version' ## version always goes first
|
184
33
|
|
185
34
|
require 'beerdb/models/forward'
|
186
|
-
require 'beerdb/models/country'
|
187
|
-
require 'beerdb/models/region'
|
188
|
-
require 'beerdb/models/city'
|
35
|
+
require 'beerdb/models/world/country'
|
36
|
+
require 'beerdb/models/world/region'
|
37
|
+
require 'beerdb/models/world/city'
|
189
38
|
require 'beerdb/models/tag'
|
190
39
|
require 'beerdb/models/beer'
|
191
40
|
require 'beerdb/models/brand'
|
192
41
|
require 'beerdb/models/brewery'
|
193
|
-
require 'beerdb/models/user' # db model extensions - move to its own addon gem?
|
194
|
-
require 'beerdb/models/drink' # db model extensions - move to its own addon gem?
|
195
|
-
require 'beerdb/models/bookmark' # db model extensions - move to its own addon gem?
|
196
|
-
require 'beerdb/models/note' # db model extensions - move to its own addon gem?
|
197
|
-
|
198
|
-
|
199
|
-
## add backwards compatible namespace
|
200
|
-
## todo: move to forward -- check sportdb/worlddb convention ??
|
201
|
-
module BeerDb
|
202
|
-
Models = Model
|
203
|
-
end
|
204
42
|
|
205
43
|
|
206
44
|
require 'beerdb/serializers/beer'
|
@@ -214,14 +52,6 @@ require 'beerdb/stats'
|
|
214
52
|
|
215
53
|
module BeerDb
|
216
54
|
|
217
|
-
def self.banner
|
218
|
-
"beerdb #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
219
|
-
end
|
220
|
-
|
221
|
-
def self.root
|
222
|
-
"#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
|
223
|
-
end
|
224
|
-
|
225
55
|
def self.main
|
226
56
|
require 'beerdb/cli/main'
|
227
57
|
# Runner.new.run(ARGV) old code
|
@@ -231,10 +61,13 @@ module BeerDb
|
|
231
61
|
CreateDb.new.up
|
232
62
|
|
233
63
|
### fix: make optional do NOT auto create here
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
64
|
+
### fix: use if defined? BeerDbNote or similar or/and check if table exist ??
|
65
|
+
### or move to beerdb-note ??
|
66
|
+
|
67
|
+
# CreateDbExtrasUsers.new.up
|
68
|
+
# CreateDbExtrasBookmarks.new.up
|
69
|
+
# CreateDbExtrasDrinks.new.up
|
70
|
+
# CreateDbExtrasNotes.new.up
|
238
71
|
|
239
72
|
ConfDb::Model::Prop.create!( key: 'db.schema.beer.version', value: VERSION )
|
240
73
|
end
|
@@ -267,11 +100,6 @@ module BeerDb
|
|
267
100
|
Stats.new.tables
|
268
101
|
end
|
269
102
|
|
270
|
-
###
|
271
|
-
# fix: (re)use ConfDb.props
|
272
|
-
def self.props
|
273
|
-
Stats.new.props
|
274
|
-
end
|
275
103
|
|
276
104
|
end # module BeerDb
|
277
105
|
|
data/test/helper.rb
CHANGED
@@ -9,20 +9,11 @@ require 'minitest/autorun'
|
|
9
9
|
# include MiniTest::Unit # lets us use TestCase instead of MiniTest::Unit::TestCase
|
10
10
|
|
11
11
|
|
12
|
-
# ruby stdlibs
|
13
|
-
|
14
|
-
require 'json'
|
15
|
-
require 'uri'
|
16
|
-
require 'pp'
|
17
|
-
|
18
|
-
# ruby gems
|
19
|
-
|
20
|
-
require 'active_record'
|
21
|
-
|
22
12
|
# our own code
|
23
13
|
|
24
14
|
require 'beerdb'
|
25
|
-
require 'logutils/db' #
|
15
|
+
require 'logutils/db' # NOTE: explict require required for LogDb (not automatic)
|
16
|
+
|
26
17
|
|
27
18
|
Country = WorldDb::Model::Country
|
28
19
|
Region = WorldDb::Model::Region
|
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.9.
|
4
|
+
version: 0.9.5
|
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: 2014-10-
|
12
|
+
date: 2014-10-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: props
|
16
|
-
requirement: &
|
16
|
+
requirement: &82209140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *82209140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: logutils
|
27
|
-
requirement: &
|
27
|
+
requirement: &82208590 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *82208590
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: textutils
|
38
|
-
requirement: &
|
38
|
+
requirement: &82208120 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *82208120
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: worlddb
|
49
|
-
requirement: &
|
49
|
+
requirement: &82207380 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.0.2
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *82207380
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: tagutils
|
60
|
-
requirement: &
|
60
|
+
requirement: &82206750 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *82206750
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activerecord-utils
|
71
|
-
requirement: &
|
71
|
+
requirement: &82205990 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *82205990
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: fetcher
|
82
|
-
requirement: &
|
82
|
+
requirement: &82204150 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0.3'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *82204150
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: gli
|
93
|
-
requirement: &
|
93
|
+
requirement: &82203870 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 2.5.6
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *82203870
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: activerecord
|
104
|
-
requirement: &
|
104
|
+
requirement: &82203620 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *82203620
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rdoc
|
115
|
-
requirement: &
|
115
|
+
requirement: &82203360 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '4.0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *82203360
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: hoe
|
126
|
-
requirement: &
|
126
|
+
requirement: &82203110 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,7 +131,7 @@ dependencies:
|
|
131
131
|
version: '3.12'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *82203110
|
135
135
|
description: beerdb - beer.db command line tool
|
136
136
|
email: beerdb@googlegroups.com
|
137
137
|
executables:
|
@@ -153,28 +153,17 @@ files:
|
|
153
153
|
- lib/beerdb/console.rb
|
154
154
|
- lib/beerdb/deleter.rb
|
155
155
|
- lib/beerdb/models/beer.rb
|
156
|
-
- lib/beerdb/models/bookmark.rb
|
157
156
|
- lib/beerdb/models/brand.rb
|
158
157
|
- lib/beerdb/models/brewery.rb
|
159
|
-
- lib/beerdb/models/city.rb
|
160
|
-
- lib/beerdb/models/country.rb
|
161
|
-
- lib/beerdb/models/drink.rb
|
162
158
|
- lib/beerdb/models/forward.rb
|
163
|
-
- lib/beerdb/models/note.rb
|
164
|
-
- lib/beerdb/models/region.rb
|
165
159
|
- lib/beerdb/models/tag.rb
|
166
|
-
- lib/beerdb/models/
|
160
|
+
- lib/beerdb/models/world/city.rb
|
161
|
+
- lib/beerdb/models/world/country.rb
|
162
|
+
- lib/beerdb/models/world/region.rb
|
167
163
|
- lib/beerdb/reader.rb
|
168
164
|
- lib/beerdb/schema.rb
|
169
165
|
- lib/beerdb/serializers/beer.rb
|
170
166
|
- lib/beerdb/serializers/brewery.rb
|
171
|
-
- lib/beerdb/server.rb
|
172
|
-
- lib/beerdb/server/public/style.css
|
173
|
-
- lib/beerdb/server/views/_debug.erb
|
174
|
-
- lib/beerdb/server/views/_version.erb
|
175
|
-
- lib/beerdb/server/views/debug.erb
|
176
|
-
- lib/beerdb/server/views/index.erb
|
177
|
-
- lib/beerdb/server/views/layout.erb
|
178
167
|
- lib/beerdb/stats.rb
|
179
168
|
- lib/beerdb/version.rb
|
180
169
|
- test/helper.rb
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module BeerDb
|
4
|
-
module Model
|
5
|
-
|
6
|
-
class Bookmark < ActiveRecord::Base
|
7
|
-
|
8
|
-
belongs_to :bookmarkable, :polymorphic => true
|
9
|
-
belongs_to :user
|
10
|
-
|
11
|
-
|
12
|
-
### fix - how to do it with has_many macro? use finder_sql?
|
13
|
-
def drinks
|
14
|
-
## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
|
15
|
-
Drink.where( user_id: user_id, beer_id: bookmarkable_id )
|
16
|
-
end
|
17
|
-
|
18
|
-
def notes
|
19
|
-
## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
|
20
|
-
Note.where( user_id: user_id, beer_id: bookmarkable_id )
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
## todo: check: how to handle polymorphic best for getting beer for bookmarkable?
|
25
|
-
def beer
|
26
|
-
## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
|
27
|
-
Beer.find( bookmarkable_id )
|
28
|
-
end
|
29
|
-
|
30
|
-
end # class Bookmark
|
31
|
-
|
32
|
-
end # module Model
|
33
|
-
end # module BeerDb
|
data/lib/beerdb/models/city.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module WorldDb
|
4
|
-
module Model
|
5
|
-
|
6
|
-
class City
|
7
|
-
has_many :beers, :class_name => 'BeerDb::Model::Beer', :foreign_key => 'city_id'
|
8
|
-
has_many :brands, :class_name => 'BeerDb::Model::Brand', :foreign_key => 'city_id'
|
9
|
-
has_many :breweries, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'city_id'
|
10
|
-
end # class Country
|
11
|
-
|
12
|
-
end # module Model
|
13
|
-
end # module WorldDb
|
14
|
-
|
data/lib/beerdb/models/drink.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module BeerDb
|
4
|
-
module Model
|
5
|
-
|
6
|
-
class Drink < ActiveRecord::Base
|
7
|
-
|
8
|
-
belongs_to :beer, class_name: 'BeerDb::Model::Beer'
|
9
|
-
belongs_to :user, class_name: 'BeerDb::Model::User'
|
10
|
-
|
11
|
-
before_save :on_before_save
|
12
|
-
|
13
|
-
def on_before_save
|
14
|
-
# todo/check: can we use blank? for datetime too or just array,strings,etc.
|
15
|
-
# check - can we use/access created_at? already set for new records?
|
16
|
-
|
17
|
-
self.drunk_at = Time.now if drunk_at.blank?
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
end # class Drink
|
22
|
-
|
23
|
-
end # module Model
|
24
|
-
end # module BeerDb
|
25
|
-
|
data/lib/beerdb/models/note.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module BeerDb
|
4
|
-
module Model
|
5
|
-
|
6
|
-
class Note < ActiveRecord::Base
|
7
|
-
|
8
|
-
belongs_to :beer, class_name: 'BeerDb::Model::Beer'
|
9
|
-
belongs_to :user, class_name: 'BeerDb::Model::User'
|
10
|
-
|
11
|
-
end # class Note
|
12
|
-
|
13
|
-
end # module Model
|
14
|
-
end # module BeerDb
|
15
|
-
|
data/lib/beerdb/models/region.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module WorldDb
|
4
|
-
module Model
|
5
|
-
|
6
|
-
class Region
|
7
|
-
has_many :beers, :class_name => 'BeerDb::Model::Beer', :foreign_key => 'region_id'
|
8
|
-
has_many :brands, :class_name => 'BeerDb::Model::Brand', :foreign_key => 'region_id'
|
9
|
-
has_many :breweries, :class_name => 'BeerDb::Model::Brewery', :foreign_key => 'region_id'
|
10
|
-
end # class Region
|
11
|
-
|
12
|
-
end # module Model
|
13
|
-
end # module WorldDb
|
14
|
-
|
data/lib/beerdb/models/user.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module BeerDb
|
4
|
-
module Model
|
5
|
-
|
6
|
-
class User < ActiveRecord::Base
|
7
|
-
|
8
|
-
has_many :notes # beers w/ ratings
|
9
|
-
has_many :drinks
|
10
|
-
|
11
|
-
has_many :bookmarks # bookmarked beers
|
12
|
-
|
13
|
-
|
14
|
-
before_save :on_before_save
|
15
|
-
|
16
|
-
def on_before_save
|
17
|
-
if email.blank?
|
18
|
-
self.key = 'xxx'
|
19
|
-
else
|
20
|
-
# NB: remove whitespace and (.-+_) and downcase
|
21
|
-
self.key = email.gsub( /[\s\.\-+_]/, '' ).downcase
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end # class User
|
26
|
-
|
27
|
-
end # module Model
|
28
|
-
end # module BeerDb
|
29
|
-
|
@@ -1,36 +0,0 @@
|
|
1
|
-
body {
|
2
|
-
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
|
3
|
-
|
4
|
-
a {
|
5
|
-
color: black;
|
6
|
-
text-decoration: none; }
|
7
|
-
a:hover {
|
8
|
-
color: black;
|
9
|
-
background-color: aqua;
|
10
|
-
text-decoration: underline; }
|
11
|
-
a:visited {
|
12
|
-
color: black; }
|
13
|
-
|
14
|
-
.params {
|
15
|
-
color: green;
|
16
|
-
font-style: italic;
|
17
|
-
font-weight: bold; }
|
18
|
-
|
19
|
-
pre {
|
20
|
-
background-color: #F3F3F3;
|
21
|
-
border-bottom: 1px solid #BBBBBB;
|
22
|
-
border-top: 1px solid #BBBBBB;
|
23
|
-
padding: 4px; }
|
24
|
-
|
25
|
-
|
26
|
-
/**********
|
27
|
-
* version / powered by
|
28
|
-
*/
|
29
|
-
|
30
|
-
.version {
|
31
|
-
text-align: center;
|
32
|
-
margin-top: 10px;
|
33
|
-
color: grey; }
|
34
|
-
.version a, .version span {
|
35
|
-
font-size: 12px;
|
36
|
-
color: grey; }
|
@@ -1,17 +0,0 @@
|
|
1
|
-
|
2
|
-
<h3>Debug</h3>
|
3
|
-
|
4
|
-
<pre>
|
5
|
-
request.scheme <%= request.scheme %>
|
6
|
-
request.script_name <%= request.script_name %>
|
7
|
-
request.path_info <%= request.path_info %>
|
8
|
-
request.port <%= request.port %>
|
9
|
-
request.request_method <%= request.request_method %>
|
10
|
-
request.query_string <%= request.query_string %>
|
11
|
-
request.host <%= request.host %>
|
12
|
-
request.referrer <%= request.referrer %>
|
13
|
-
request.user_agent <%= request.user_agent %>
|
14
|
-
request.url <%= request.url %>
|
15
|
-
request.path <%= request.path %>
|
16
|
-
request.ip <%= request.ip %>
|
17
|
-
</pre>
|
@@ -1,7 +0,0 @@
|
|
1
|
-
<div class='version'>
|
2
|
-
<a href="http://groups.google.com/group/beerdb">Questions? Comments?</a> |
|
3
|
-
<a href="https://github.com/geraldb/world.db">world.db/<%= WorldDb::VERSION %></a>,
|
4
|
-
<a href="https://github.com/geraldb/beer.db">beer.db/<%= BeerDb::VERSION %></a> -
|
5
|
-
<span>Ruby/<%= "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}/#{RUBY_PLATFORM})" %> on</span>
|
6
|
-
<span>Sinatra/<%= Sinatra::VERSION %> (<%= ENV['RACK_ENV'] %>)</span>
|
7
|
-
</div>
|