radiospieler 0.3.0 → 0.3.1
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/Gemfile +1 -0
- data/Gemfile.lock +3 -0
- data/VERSION +1 -1
- data/lib/radiospieler/radiospieler/cache.rb +62 -53
- data/radiospieler.gemspec +120 -0
- data/test/app_test.rb +1 -1
- data/test/array_ext_test.rb +1 -1
- data/test/bitlify_test.rb +1 -1
- data/test/cache_test.rb +1 -1
- data/test/cgi_ext_test.rb +1 -1
- data/test/config_test.rb +1 -1
- data/test/hash_ext_test.rb +1 -1
- data/test/http_test.rb +1 -1
- data/test/string_ext_test.rb +1 -1
- data/test/{helper.rb → test_helper.rb} +0 -0
- data/test/tls_test.rb +1 -1
- data/test/uid_test.rb +1 -1
- metadata +39 -27
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -35,6 +35,8 @@ GEM
|
|
35
35
|
ruby-debug-base19 (>= 0.11.19)
|
36
36
|
ruby_core_source (0.1.5)
|
37
37
|
archive-tar-minitar (>= 0.5.2)
|
38
|
+
simple_cache (0.8.1)
|
39
|
+
sqlite3
|
38
40
|
simplecov (0.6.1)
|
39
41
|
multi_json (~> 1.0)
|
40
42
|
simplecov-html (~> 0.5.3)
|
@@ -57,6 +59,7 @@ DEPENDENCIES
|
|
57
59
|
psych
|
58
60
|
redis
|
59
61
|
ruby-debug19
|
62
|
+
simple_cache
|
60
63
|
simplecov
|
61
64
|
sqlite3
|
62
65
|
vcr
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
@@ -1,77 +1,86 @@
|
|
1
1
|
require_relative "config"
|
2
|
+
require "simple_cache"
|
2
3
|
|
3
|
-
#
|
4
|
-
# This is a cache module, which keeps entries for a certain time period,
|
5
|
-
# stored away in a redis store.
|
4
|
+
# This is a cache module, which keeps entries for a certain time period (or forever).
|
6
5
|
#
|
7
6
|
# Entries are packed via Marshal.
|
8
7
|
module App
|
9
8
|
module Cache
|
10
9
|
DEFAULT_MAX_AGE = 4 * 3600 # 4 hours.
|
11
10
|
|
12
|
-
def self.
|
13
|
-
store.
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.uid(key)
|
17
|
-
case key
|
18
|
-
when String, Hash then key.uid64
|
19
|
-
when Fixnum then key
|
20
|
-
else
|
21
|
-
App.logger.warn "Don't know how to deal with non-uid key #{key}"
|
22
|
-
nil
|
23
|
-
end
|
11
|
+
def self.store
|
12
|
+
@store ||= Store.create(App.config[:cache]) || Store.fallback
|
24
13
|
end
|
25
|
-
|
26
|
-
def self.cached(key, max_age = DEFAULT_MAX_AGE, &block)
|
27
|
-
cache_id = uid(key)
|
28
14
|
|
29
|
-
|
30
|
-
|
31
|
-
if marshalled = store.get(cache_id)
|
32
|
-
unmarshal(marshalled)
|
33
|
-
else
|
34
|
-
yield.tap { |v|
|
35
|
-
store.set(cache_id, marshal(v))
|
36
|
-
store.expire(cache_id, max_age)
|
37
|
-
}
|
38
|
-
end
|
15
|
+
def self.store=(store)
|
16
|
+
@store = store
|
39
17
|
end
|
40
18
|
|
41
|
-
def self.
|
42
|
-
|
19
|
+
def self.clear
|
20
|
+
store.clear
|
43
21
|
end
|
44
22
|
|
45
|
-
|
46
|
-
|
23
|
+
module Store
|
24
|
+
def self.create(url)
|
25
|
+
return unless url
|
26
|
+
|
27
|
+
uri = URI.parse(url)
|
28
|
+
case uri.scheme
|
29
|
+
when "redis" then RedisStore.new(url)
|
30
|
+
when nil then ::SimpleCache.new(uri.path)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.fallback
|
35
|
+
name = "#{File.basename(App.root)}/a#{App.root.uid64}"
|
36
|
+
SimpleCache.new(name).tap do |store|
|
37
|
+
App.logger.warn "No, invalid, or unsupported :cache configuration, fallback to #{store.path}"
|
38
|
+
end
|
39
|
+
end
|
47
40
|
end
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
uri = URI.parse(url)
|
52
|
-
case uri.scheme
|
53
|
-
when "redis"
|
41
|
+
|
42
|
+
class Store::RedisStore
|
43
|
+
def initialize(url)
|
54
44
|
require "redis"
|
55
|
-
Redis.connect(:url => url)
|
56
|
-
when nil
|
57
|
-
SimpleCache.new(uri.path)
|
45
|
+
@redis = Redis.connect(:url => url)
|
58
46
|
end
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
47
|
+
|
48
|
+
include SimpleCache::Marshal
|
49
|
+
|
50
|
+
def keys
|
51
|
+
@redis.keys
|
52
|
+
end
|
53
|
+
|
54
|
+
def clear
|
55
|
+
@redis.flushdb
|
56
|
+
#debugger
|
57
|
+
1
|
58
|
+
end
|
59
|
+
|
60
|
+
def store(key, value, max_age = DEFAULT_MAX_AGE)
|
61
|
+
cache_id = uid(key)
|
62
|
+
if value
|
63
|
+
@redis.set cache_id, marshal(value)
|
64
|
+
@redis.expire cache_id, max_age if max_age
|
65
|
+
else
|
66
|
+
@redis.del cache_id
|
67
|
+
end
|
68
|
+
value
|
69
|
+
end
|
70
|
+
|
71
|
+
def fetch(key, &block)
|
72
|
+
marshalled = @redis.get(uid(key))
|
73
|
+
marshalled ? unmarshal(marshalled) : yield
|
70
74
|
end
|
71
75
|
end
|
72
76
|
end
|
73
77
|
|
74
78
|
def cached(key, max_age = Cache::DEFAULT_MAX_AGE, &block)
|
75
|
-
|
79
|
+
return yield if !max_age
|
80
|
+
|
81
|
+
cache_store = Cache.store
|
82
|
+
cache_store.fetch(key) do
|
83
|
+
cache_store.store(key, yield, max_age)
|
84
|
+
end
|
76
85
|
end
|
77
86
|
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "radiospieler"
|
8
|
+
s.version = "0.3.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["radiospiel"]
|
12
|
+
s.date = "2012-04-05"
|
13
|
+
s.description = "Some basics that your application could benefit from."
|
14
|
+
s.email = "eno@open-lab.org"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"app.tmproj",
|
28
|
+
"config/app.yml",
|
29
|
+
"lib/core-extensions/array_ext.rb",
|
30
|
+
"lib/core-extensions/benchmark-logger.rb",
|
31
|
+
"lib/core-extensions/cgi_ext.rb",
|
32
|
+
"lib/core-extensions/hash_ext.rb",
|
33
|
+
"lib/core-extensions/object_ext.rb",
|
34
|
+
"lib/core-extensions/string_ext.rb",
|
35
|
+
"lib/core-extensions/string_without_accents.rb",
|
36
|
+
"lib/core-extensions/tls.rb",
|
37
|
+
"lib/core-extensions/uids.rb",
|
38
|
+
"lib/core-extensions/uri_ext.rb",
|
39
|
+
"lib/extensions/bitly.rb",
|
40
|
+
"lib/extensions/http.rb",
|
41
|
+
"lib/radiospieler.rb",
|
42
|
+
"lib/radiospieler/radiospieler.rb",
|
43
|
+
"lib/radiospieler/radiospieler/cache.rb",
|
44
|
+
"lib/radiospieler/radiospieler/config.rb",
|
45
|
+
"lib/radiospieler/radiospieler/logger.rb",
|
46
|
+
"lib/radiospieler/radiospieler/root.rb",
|
47
|
+
"radiospieler.gemspec",
|
48
|
+
"script/watchr",
|
49
|
+
"test/app_test.rb",
|
50
|
+
"test/array_ext_test.rb",
|
51
|
+
"test/bitlify_test.rb",
|
52
|
+
"test/cache_test.rb",
|
53
|
+
"test/cgi_ext_test.rb",
|
54
|
+
"test/config.yml",
|
55
|
+
"test/config_test.rb",
|
56
|
+
"test/fixtures-vcr/bitly_limit_exceeded.yml",
|
57
|
+
"test/fixtures-vcr/bitly_ok.yml",
|
58
|
+
"test/fixtures-vcr/http_test.yml",
|
59
|
+
"test/hash_ext_test.rb",
|
60
|
+
"test/http_test.rb",
|
61
|
+
"test/string_ext_test.rb",
|
62
|
+
"test/test_helper.rb",
|
63
|
+
"test/tls_test.rb",
|
64
|
+
"test/uid_test.rb"
|
65
|
+
]
|
66
|
+
s.homepage = "http://github.com/radiospiel/radiospieler"
|
67
|
+
s.licenses = ["MIT"]
|
68
|
+
s.require_paths = ["lib"]
|
69
|
+
s.rubygems_version = "1.8.17"
|
70
|
+
s.summary = "Application base code"
|
71
|
+
|
72
|
+
if s.respond_to? :specification_version then
|
73
|
+
s.specification_version = 3
|
74
|
+
|
75
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
76
|
+
s.add_runtime_dependency(%q<pg>, [">= 0"])
|
77
|
+
s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
78
|
+
s.add_runtime_dependency(%q<redis>, [">= 0"])
|
79
|
+
s.add_runtime_dependency(%q<micro_sql>, [">= 0"])
|
80
|
+
s.add_runtime_dependency(%q<simple_cache>, [">= 0"])
|
81
|
+
s.add_runtime_dependency(%q<htmlentities>, [">= 0"])
|
82
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
83
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
84
|
+
s.add_development_dependency(%q<vcr>, [">= 0"])
|
85
|
+
s.add_development_dependency(%q<webmock>, [">= 0"])
|
86
|
+
s.add_development_dependency(%q<psych>, [">= 0"])
|
87
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
88
|
+
s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
|
89
|
+
else
|
90
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
91
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
92
|
+
s.add_dependency(%q<redis>, [">= 0"])
|
93
|
+
s.add_dependency(%q<micro_sql>, [">= 0"])
|
94
|
+
s.add_dependency(%q<simple_cache>, [">= 0"])
|
95
|
+
s.add_dependency(%q<htmlentities>, [">= 0"])
|
96
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
97
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
98
|
+
s.add_dependency(%q<vcr>, [">= 0"])
|
99
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
100
|
+
s.add_dependency(%q<psych>, [">= 0"])
|
101
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
102
|
+
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
103
|
+
end
|
104
|
+
else
|
105
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
106
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
107
|
+
s.add_dependency(%q<redis>, [">= 0"])
|
108
|
+
s.add_dependency(%q<micro_sql>, [">= 0"])
|
109
|
+
s.add_dependency(%q<simple_cache>, [">= 0"])
|
110
|
+
s.add_dependency(%q<htmlentities>, [">= 0"])
|
111
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
112
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
113
|
+
s.add_dependency(%q<vcr>, [">= 0"])
|
114
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
115
|
+
s.add_dependency(%q<psych>, [">= 0"])
|
116
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
117
|
+
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
data/test/app_test.rb
CHANGED
data/test/array_ext_test.rb
CHANGED
data/test/bitlify_test.rb
CHANGED
data/test/cache_test.rb
CHANGED
data/test/cgi_ext_test.rb
CHANGED
data/test/config_test.rb
CHANGED
data/test/hash_ext_test.rb
CHANGED
data/test/http_test.rb
CHANGED
data/test/string_ext_test.rb
CHANGED
File without changes
|
data/test/tls_test.rb
CHANGED
data/test/uid_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: radiospieler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pg
|
16
|
-
requirement: &
|
16
|
+
requirement: &70359227563120 !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: *70359227563120
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &70359227562000 !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: *70359227562000
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: redis
|
38
|
-
requirement: &
|
38
|
+
requirement: &70359227560880 !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: *70359227560880
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: micro_sql
|
49
|
-
requirement: &
|
49
|
+
requirement: &70359227559640 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,21 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70359227559640
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: simple_cache
|
60
|
+
requirement: &70359227558760 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70359227558760
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: htmlentities
|
60
|
-
requirement: &
|
71
|
+
requirement: &70359227541000 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :runtime
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70359227541000
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: bundler
|
71
|
-
requirement: &
|
82
|
+
requirement: &70359227540160 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70359227540160
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: jeweler
|
82
|
-
requirement: &
|
93
|
+
requirement: &70359227539520 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70359227539520
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: vcr
|
93
|
-
requirement: &
|
104
|
+
requirement: &70359227538720 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70359227538720
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: webmock
|
104
|
-
requirement: &
|
115
|
+
requirement: &70359227537260 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70359227537260
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: psych
|
115
|
-
requirement: &
|
126
|
+
requirement: &70359227535340 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70359227535340
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: simplecov
|
126
|
-
requirement: &
|
137
|
+
requirement: &70359227534760 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: '0'
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70359227534760
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: ruby-debug19
|
137
|
-
requirement: &
|
148
|
+
requirement: &70359227533920 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,7 +153,7 @@ dependencies:
|
|
142
153
|
version: '0'
|
143
154
|
type: :development
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *70359227533920
|
146
157
|
description: Some basics that your application could benefit from.
|
147
158
|
email: eno@open-lab.org
|
148
159
|
executables: []
|
@@ -178,6 +189,7 @@ files:
|
|
178
189
|
- lib/radiospieler/radiospieler/config.rb
|
179
190
|
- lib/radiospieler/radiospieler/logger.rb
|
180
191
|
- lib/radiospieler/radiospieler/root.rb
|
192
|
+
- radiospieler.gemspec
|
181
193
|
- script/watchr
|
182
194
|
- test/app_test.rb
|
183
195
|
- test/array_ext_test.rb
|
@@ -190,9 +202,9 @@ files:
|
|
190
202
|
- test/fixtures-vcr/bitly_ok.yml
|
191
203
|
- test/fixtures-vcr/http_test.yml
|
192
204
|
- test/hash_ext_test.rb
|
193
|
-
- test/helper.rb
|
194
205
|
- test/http_test.rb
|
195
206
|
- test/string_ext_test.rb
|
207
|
+
- test/test_helper.rb
|
196
208
|
- test/tls_test.rb
|
197
209
|
- test/uid_test.rb
|
198
210
|
homepage: http://github.com/radiospiel/radiospieler
|
@@ -210,7 +222,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
210
222
|
version: '0'
|
211
223
|
segments:
|
212
224
|
- 0
|
213
|
-
hash: -
|
225
|
+
hash: -3145811610061597683
|
214
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
227
|
none: false
|
216
228
|
requirements:
|