uzuuzu-core 0.0.10 → 0.0.12
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/VERSION +1 -1
- data/lib/uzuuzu/application.rb +11 -0
- data/lib/uzuuzu/controller/login/openid.rb +87 -0
- data/lib/uzuuzu/controller/login/twitter.rb +66 -0
- data/lib/uzuuzu/controller/logout/index.rb +25 -0
- data/lib/uzuuzu/environments.rb +14 -29
- data/lib/uzuuzu/helper/controller.rb +7 -42
- data/lib/uzuuzu/helper/route.rb +1 -0
- data/lib/uzuuzu/memcache/leveldb.rb +4 -1
- data/lib/uzuuzu/rack_session/memcache.rb +1 -1
- data/lib/uzuuzu/service.rb +4 -2
- data/lib/uzuuzu/wrapper/uzuuzu.rb +12 -20
- data/uzuuzu-core.gemspec +5 -13
- metadata +6 -14
- data/lib/uzuuzu/datastore/activerecord.rb +0 -1
- data/lib/uzuuzu/datastore/datamapper.rb +0 -222
- data/lib/uzuuzu/datastore/sequel.rb +0 -0
- data/lib/uzuuzu/kvs/appengine.rb +0 -65
- data/lib/uzuuzu/kvs/hbase.rb +0 -2
- data/lib/uzuuzu/kvs/leveldb.rb +0 -73
- data/lib/uzuuzu/kvs/mongo.rb +0 -68
- data/lib/uzuuzu/mailer/appengine.rb +0 -27
- data/lib/uzuuzu/mailer/tmail.rb +0 -44
- data/lib/uzuuzu/model.rb +0 -49
- data/lib/uzuuzu/rack_session/datastore.rb +0 -22
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.12
|
data/lib/uzuuzu/application.rb
CHANGED
@@ -21,6 +21,8 @@ module UzuUzu
|
|
21
21
|
attr_accessor :helpers
|
22
22
|
#
|
23
23
|
attr_accessor :views
|
24
|
+
#
|
25
|
+
attr_accessor :servicies
|
24
26
|
|
25
27
|
#
|
26
28
|
#
|
@@ -46,6 +48,7 @@ module UzuUzu
|
|
46
48
|
@environments = Environments.new(@config_file)
|
47
49
|
::UzuUzu.apps[@name] = self
|
48
50
|
yield self if block_given?
|
51
|
+
::Thread.current[:application] = nil
|
49
52
|
end # initialize
|
50
53
|
|
51
54
|
def self.controllers
|
@@ -95,6 +98,14 @@ module UzuUzu
|
|
95
98
|
def views
|
96
99
|
@views ||= self.class.views.clone
|
97
100
|
end
|
101
|
+
|
102
|
+
def self.services
|
103
|
+
@@services ||= []
|
104
|
+
end
|
105
|
+
|
106
|
+
def services
|
107
|
+
@services ||= self.class.services.clone
|
108
|
+
end
|
98
109
|
|
99
110
|
#
|
100
111
|
#
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'openid'
|
4
|
+
require 'openid/store/filesystem'
|
5
|
+
require 'openid/extensions/pape'
|
6
|
+
require 'openid/extensions/sreg'
|
7
|
+
require 'openid/store/memcache'
|
8
|
+
|
9
|
+
module UzuUzu
|
10
|
+
module Controller
|
11
|
+
#
|
12
|
+
#
|
13
|
+
#
|
14
|
+
class Openid
|
15
|
+
include ::UzuUzuCms::Helper::Controller
|
16
|
+
|
17
|
+
# need params['domain']
|
18
|
+
def index
|
19
|
+
if session[:openid_domain].blank? or session[:openid_entry].blank?
|
20
|
+
openid_begin
|
21
|
+
elsif session[:openid_domain] and session[:openid_entry]
|
22
|
+
openid_complete
|
23
|
+
else
|
24
|
+
response.redirect request.referrer || "/"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def openid_begin
|
29
|
+
domain = request.params['domain']
|
30
|
+
response.redirect request.referrer || "/" if domain.to_s.empty?
|
31
|
+
session[:openid_domain] = domain
|
32
|
+
session[:openid_entry] = request.referrer || "/"
|
33
|
+
|
34
|
+
openid_request = openid_consumer.begin(domain)
|
35
|
+
|
36
|
+
papereq = ::OpenID::PAPE::Request.new
|
37
|
+
papereq.add_policy_uri(::OpenID::PAPE::AUTH_PHISHING_RESISTANT)
|
38
|
+
papereq.max_auth_age = 2*60*60
|
39
|
+
openid_request.add_extension(papereq)
|
40
|
+
|
41
|
+
sregreq = ::OpenID::SReg::Request.new
|
42
|
+
sregreq.request_fields(['fullname', 'nickname', 'dob', 'email',
|
43
|
+
'gender', 'postcode', 'country', 'language',
|
44
|
+
'timezone'])
|
45
|
+
openid_request.add_extension(sregreq)
|
46
|
+
openid_request.return_to_args['did_pape'] = 'y'
|
47
|
+
|
48
|
+
root = helper.root_uri
|
49
|
+
return_to = "#{helper.root_uri}#{helper.r(:openid_complete)}"
|
50
|
+
immediate = false
|
51
|
+
|
52
|
+
if openid_request.send_redirect?(root, return_to, immediate)
|
53
|
+
redirect_url = openid_request.redirect_url(root, return_to, immediate)
|
54
|
+
response.redirect redirect_url
|
55
|
+
else
|
56
|
+
# what the hell is @form_text ?
|
57
|
+
end
|
58
|
+
rescue ::OpenID::OpenIDError => ex
|
59
|
+
response.server_error
|
60
|
+
end
|
61
|
+
|
62
|
+
def openid_complete
|
63
|
+
openid_response = openid_consumer.complete(request.params, request.url)
|
64
|
+
|
65
|
+
case openid_response.status
|
66
|
+
when ::OpenID::Consumer::FAILURE
|
67
|
+
when ::OpenID::Consumer::SUCCESS
|
68
|
+
# Backwards compatibility
|
69
|
+
session[:openid_identity] = openid_response.identity_url
|
70
|
+
session[:openid_sreg] = ::OpenID::SReg::Response.from_success_response(openid_response)
|
71
|
+
end
|
72
|
+
openid_entry = session[:openid_entry]
|
73
|
+
session.delete(:openid_entry)
|
74
|
+
response.redirect openid_entry
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
# use memcache
|
81
|
+
def openid_consumer
|
82
|
+
_memcache = ::OpenID::Store::Memcache.new(memcache)
|
83
|
+
::OpenID::Consumer.new(session, _memcache)
|
84
|
+
end
|
85
|
+
end # Openid
|
86
|
+
end # Controller
|
87
|
+
end # UzuUzu
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'oauth'
|
3
|
+
|
4
|
+
module UzuUzuCms
|
5
|
+
module Controller
|
6
|
+
module Login
|
7
|
+
class Twitter
|
8
|
+
include ::UzuUzuCms::Helper::Controller
|
9
|
+
|
10
|
+
def index
|
11
|
+
@config = Environments.current.config['twitter']
|
12
|
+
response.server_error if @config.blank?
|
13
|
+
if session[:login_user_id]
|
14
|
+
redirect request.referrer || '/'
|
15
|
+
end
|
16
|
+
if session[:twitter_request_token].blank? || session[:twitter_request_token_secret].blank?
|
17
|
+
request_token(name)
|
18
|
+
end
|
19
|
+
access_token
|
20
|
+
response.redirect session[:referer] || '/'
|
21
|
+
end # index
|
22
|
+
|
23
|
+
private
|
24
|
+
def request_token
|
25
|
+
session[:referer] = request.referrer || '/'
|
26
|
+
twitter_consumer = OAuth::Consumer.new(@config['consumer_key'], @config['consumer_secret'], :site => "http://twitter.com")
|
27
|
+
unless twitter_consumer
|
28
|
+
response.server_error
|
29
|
+
end
|
30
|
+
|
31
|
+
request_token = twitter_consumer.get_request_token
|
32
|
+
session[:twitter_request_token] = request_token.token
|
33
|
+
session[:twitter_request_token_secret] = request_token.secret
|
34
|
+
|
35
|
+
response.redirect request_token.authorize_url
|
36
|
+
end
|
37
|
+
|
38
|
+
def access_token
|
39
|
+
twitter_consumer = OAuth::Consumer.new(@config['consumer_key'], @config['consumer_secret'], :site => "http://twitter.com")
|
40
|
+
unless twitter_consumer
|
41
|
+
response.server_error
|
42
|
+
end
|
43
|
+
request_token = OAuth::RequestToken.new(
|
44
|
+
twitter,
|
45
|
+
session[:twitter_request_token],
|
46
|
+
session[:twitter_request_token_secret]
|
47
|
+
)
|
48
|
+
access_token = request_token.get_access_token(
|
49
|
+
{},
|
50
|
+
:oauth_token => request.params[:oauth_token],
|
51
|
+
:oauth_verifier => request.params[:oauth_verifier]
|
52
|
+
)
|
53
|
+
session[:twitter_access_token] = access_token.token
|
54
|
+
session[:twitter_access_token_secret] = access_token.secret
|
55
|
+
session.delete(:twitter_request_token)
|
56
|
+
session.delete(:twitter_request_token_secret)
|
57
|
+
|
58
|
+
session[:twitter_user_id] = access_token.params[:user_id]
|
59
|
+
session[:login_user_id] = access_token.params[:screen_name]
|
60
|
+
session[:login_name] = access_token.params[:screen_name]
|
61
|
+
session[:login_domain] = 'twitter'
|
62
|
+
end
|
63
|
+
end # Oauth
|
64
|
+
end # Login
|
65
|
+
end # Controller
|
66
|
+
end # UzuUzuCms
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module UzuUzuCms
|
4
|
+
module Controller
|
5
|
+
module Logout
|
6
|
+
class Index
|
7
|
+
include ::UzuUzuCms::Helper::Controller
|
8
|
+
|
9
|
+
def index
|
10
|
+
session.delete(:openid_identity)
|
11
|
+
session.delete(:openid_sreg)
|
12
|
+
session.delete(:openid_domain)
|
13
|
+
session.delete(:openid_entry)
|
14
|
+
session.delete(:twitter_user_id)
|
15
|
+
session.delete(:twitter_access_token)
|
16
|
+
session.delete(:twitter_access_token_secret)
|
17
|
+
session.delete(:login_user_id)
|
18
|
+
session.delete(:login_name)
|
19
|
+
session.delete(:login_domain)
|
20
|
+
session.clear
|
21
|
+
end
|
22
|
+
end # Index
|
23
|
+
end # Logout
|
24
|
+
end # Controller
|
25
|
+
end # UzuUzuCms
|
data/lib/uzuuzu/environments.rb
CHANGED
@@ -9,16 +9,14 @@ module UzuUzu
|
|
9
9
|
#
|
10
10
|
DEFAULT_YAML = 'uzuuzu.yaml'
|
11
11
|
#
|
12
|
-
attr_accessor :
|
12
|
+
attr_accessor :flyweight
|
13
13
|
#
|
14
|
-
attr_accessor :
|
14
|
+
attr_accessor :service_name
|
15
15
|
#
|
16
|
-
attr_accessor :
|
16
|
+
attr_accessor :logger
|
17
17
|
#
|
18
18
|
attr_accessor :memcache
|
19
19
|
#
|
20
|
-
attr_accessor :mailer
|
21
|
-
#
|
22
20
|
attr_accessor :rack_session
|
23
21
|
#
|
24
22
|
attr_accessor :config
|
@@ -53,6 +51,7 @@ module UzuUzu
|
|
53
51
|
return if map.blank?
|
54
52
|
@config = map
|
55
53
|
@lang = map['lang'] || 'ja'
|
54
|
+
@service_name = map['service']
|
56
55
|
load_localize
|
57
56
|
end
|
58
57
|
|
@@ -69,7 +68,17 @@ module UzuUzu
|
|
69
68
|
end
|
70
69
|
end
|
71
70
|
end
|
71
|
+
|
72
|
+
def flyweight
|
73
|
+
@flyweight = {} if @flyweight.nil?
|
74
|
+
@flyweight
|
75
|
+
end
|
72
76
|
|
77
|
+
def config
|
78
|
+
return {} if @config.nil?
|
79
|
+
@config['config'] || {}
|
80
|
+
end
|
81
|
+
|
73
82
|
def logger
|
74
83
|
if @logger.nil?
|
75
84
|
env = @config['logger'].clone unless @config.nil?
|
@@ -78,22 +87,6 @@ module UzuUzu
|
|
78
87
|
@logger
|
79
88
|
end
|
80
89
|
|
81
|
-
def datastore
|
82
|
-
if @datastore.nil?
|
83
|
-
env = @config['datastore'].clone unless @config.nil?
|
84
|
-
@datastore = Wrapper::Wrapper.new('datastore', env || {}).wrapper
|
85
|
-
end
|
86
|
-
@datastore
|
87
|
-
end
|
88
|
-
|
89
|
-
def kvs
|
90
|
-
if @kvs.nil?
|
91
|
-
env = @config['kvs'].clone unless @config.nil?
|
92
|
-
@kvs = Wrapper::Wrapper.new('kvs', env || {}).wrapper
|
93
|
-
end
|
94
|
-
@kvs
|
95
|
-
end
|
96
|
-
|
97
90
|
def memcache
|
98
91
|
if @memcache.nil?
|
99
92
|
env = @config['memcache'].clone unless @config.nil?
|
@@ -102,14 +95,6 @@ module UzuUzu
|
|
102
95
|
end
|
103
96
|
@memcache
|
104
97
|
end
|
105
|
-
|
106
|
-
def mailler
|
107
|
-
if @mailer.nil?
|
108
|
-
env = @config['mailer'].clone unless @config.nil?
|
109
|
-
@mailer = Wrapper::Wrapper.new('mailer', env || {}).wrapper
|
110
|
-
end
|
111
|
-
@mailer
|
112
|
-
end # mailler
|
113
98
|
|
114
99
|
def rack_session
|
115
100
|
if @rack_session.nil?
|
@@ -15,34 +15,6 @@ module UzuUzu
|
|
15
15
|
def logger
|
16
16
|
::UzuUzu.logger
|
17
17
|
end
|
18
|
-
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
def memcache
|
23
|
-
::UzuUzu.memcache
|
24
|
-
end
|
25
|
-
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
def kvs
|
30
|
-
::UzuUzu.kvs
|
31
|
-
end
|
32
|
-
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
def datastore
|
37
|
-
::UzuUzu.datastore
|
38
|
-
end
|
39
|
-
|
40
|
-
#
|
41
|
-
#
|
42
|
-
#
|
43
|
-
def mailer
|
44
|
-
::UzuUzu.mailer
|
45
|
-
end
|
46
18
|
|
47
19
|
#
|
48
20
|
#
|
@@ -79,20 +51,6 @@ module UzuUzu
|
|
79
51
|
::UzuUzu.helper
|
80
52
|
end
|
81
53
|
|
82
|
-
#
|
83
|
-
#
|
84
|
-
#
|
85
|
-
def model
|
86
|
-
::UzuUzu.model
|
87
|
-
end
|
88
|
-
|
89
|
-
#
|
90
|
-
#
|
91
|
-
#
|
92
|
-
def service
|
93
|
-
::UzuUzu.service
|
94
|
-
end
|
95
|
-
|
96
54
|
#
|
97
55
|
#
|
98
56
|
#
|
@@ -121,6 +79,13 @@ module UzuUzu
|
|
121
79
|
request.session
|
122
80
|
end
|
123
81
|
|
82
|
+
#
|
83
|
+
#
|
84
|
+
#
|
85
|
+
def service(name)
|
86
|
+
::UzuUzu.service(name)
|
87
|
+
end
|
88
|
+
|
124
89
|
#
|
125
90
|
#
|
126
91
|
#
|
data/lib/uzuuzu/helper/route.rb
CHANGED
@@ -18,7 +18,10 @@ module UzuUzu
|
|
18
18
|
address = env['address'] || address
|
19
19
|
space = env['space'] || UzuUzu.application.name || space
|
20
20
|
end
|
21
|
-
::
|
21
|
+
unless ::File.exists?(address)
|
22
|
+
::FileUtils.mkdir_p(address)
|
23
|
+
end
|
24
|
+
|
22
25
|
@db = LevelDB::DB.new("#{address}/#{space}")
|
23
26
|
end
|
24
27
|
|
data/lib/uzuuzu/service.rb
CHANGED
@@ -11,8 +11,10 @@ module UzuUzu
|
|
11
11
|
service = AppsLoaded[::UzuUzu.current.name][id.to_sym]
|
12
12
|
unless service
|
13
13
|
require_base = self.name.gsub(/::/, '/').sub(/^UzuUzu/, 'uzuuzu').snake_case
|
14
|
-
|
15
|
-
|
14
|
+
service_name = ::Environments.current.service_name || ''
|
15
|
+
service_name = "#{service_name}/" unless service_name.blank?
|
16
|
+
require "#{require_base}/#{service_name}#{id.to_s.snake_case}"
|
17
|
+
service = const_get("#{service_name.camel_case}").const_get("#{id}")
|
16
18
|
service.apploaded if service.respond_to?(:apsploaded)
|
17
19
|
AppsLoaded[::UzuUzu.current.name][id.to_sym] = service
|
18
20
|
end
|
@@ -38,26 +38,11 @@ module UzuUzu
|
|
38
38
|
Environments.current.logger
|
39
39
|
end
|
40
40
|
|
41
|
-
#
|
42
|
-
def datastore
|
43
|
-
Environments.current.datastore
|
44
|
-
end
|
45
|
-
|
46
|
-
#
|
47
|
-
def kvs
|
48
|
-
Environments.current.kvs
|
49
|
-
end
|
50
|
-
|
51
41
|
#
|
52
42
|
def memcache
|
53
43
|
Environments.current.memcache
|
54
44
|
end
|
55
45
|
|
56
|
-
#
|
57
|
-
def mailer
|
58
|
-
Environments.current.mailer
|
59
|
-
end
|
60
|
-
|
61
46
|
def localize
|
62
47
|
Environments.current.localize
|
63
48
|
end
|
@@ -78,12 +63,19 @@ module UzuUzu
|
|
78
63
|
Response.current
|
79
64
|
end
|
80
65
|
|
81
|
-
def model
|
82
|
-
Model
|
83
|
-
end
|
84
|
-
|
85
66
|
def service
|
86
|
-
|
67
|
+
_service = nil
|
68
|
+
Application.current.services.reverse.each do |service|
|
69
|
+
begin
|
70
|
+
_service = service.send(name)
|
71
|
+
rescue => e
|
72
|
+
logger.error "service not found : #{service.name}::#{name}"
|
73
|
+
logger.debug e
|
74
|
+
logger.debug e.backtrace
|
75
|
+
end
|
76
|
+
break if _service
|
77
|
+
end
|
78
|
+
_service
|
87
79
|
end
|
88
80
|
|
89
81
|
#
|
data/uzuuzu-core.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{uzuuzu-core}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.12"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Takuya Kondo"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-12-14}
|
13
13
|
s.description = %q{uzuuzu core library}
|
14
14
|
s.email = %q{takuya.v3v@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -29,11 +29,11 @@ Gem::Specification.new do |s|
|
|
29
29
|
"lib/uzuuzu/application.rb",
|
30
30
|
"lib/uzuuzu/controller.rb",
|
31
31
|
"lib/uzuuzu/controller/error.rb",
|
32
|
+
"lib/uzuuzu/controller/login/openid.rb",
|
33
|
+
"lib/uzuuzu/controller/login/twitter.rb",
|
34
|
+
"lib/uzuuzu/controller/logout/index.rb",
|
32
35
|
"lib/uzuuzu/controller/view/error/404.rhtml",
|
33
36
|
"lib/uzuuzu/controller/view/error/500.rhtml",
|
34
|
-
"lib/uzuuzu/datastore/activerecord.rb",
|
35
|
-
"lib/uzuuzu/datastore/datamapper.rb",
|
36
|
-
"lib/uzuuzu/datastore/sequel.rb",
|
37
37
|
"lib/uzuuzu/environments.rb",
|
38
38
|
"lib/uzuuzu/ext/object.rb",
|
39
39
|
"lib/uzuuzu/helper.rb",
|
@@ -44,10 +44,6 @@ Gem::Specification.new do |s|
|
|
44
44
|
"lib/uzuuzu/helper/renderer.rb",
|
45
45
|
"lib/uzuuzu/helper/route.rb",
|
46
46
|
"lib/uzuuzu/helper/xhtml.rb",
|
47
|
-
"lib/uzuuzu/kvs/appengine.rb",
|
48
|
-
"lib/uzuuzu/kvs/hbase.rb",
|
49
|
-
"lib/uzuuzu/kvs/leveldb.rb",
|
50
|
-
"lib/uzuuzu/kvs/mongo.rb",
|
51
47
|
"lib/uzuuzu/lang/en.yaml",
|
52
48
|
"lib/uzuuzu/lang/ja.yaml",
|
53
49
|
"lib/uzuuzu/logger/appengine.rb",
|
@@ -55,16 +51,12 @@ Gem::Specification.new do |s|
|
|
55
51
|
"lib/uzuuzu/logger/loggers.rb",
|
56
52
|
"lib/uzuuzu/logger/stderr.rb",
|
57
53
|
"lib/uzuuzu/logger/stdout.rb",
|
58
|
-
"lib/uzuuzu/mailer/appengine.rb",
|
59
|
-
"lib/uzuuzu/mailer/tmail.rb",
|
60
54
|
"lib/uzuuzu/memcache/appengine.rb",
|
61
55
|
"lib/uzuuzu/memcache/dalli.rb",
|
62
56
|
"lib/uzuuzu/memcache/leveldb.rb",
|
63
57
|
"lib/uzuuzu/memcache/memcached.rb",
|
64
|
-
"lib/uzuuzu/model.rb",
|
65
58
|
"lib/uzuuzu/rack_session/appengine.rb",
|
66
59
|
"lib/uzuuzu/rack_session/cookie.rb",
|
67
|
-
"lib/uzuuzu/rack_session/datastore.rb",
|
68
60
|
"lib/uzuuzu/rack_session/memcache.rb",
|
69
61
|
"lib/uzuuzu/request.rb",
|
70
62
|
"lib/uzuuzu/response.rb",
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: uzuuzu-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.12
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Takuya Kondo
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-12-14 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -134,11 +134,11 @@ files:
|
|
134
134
|
- lib/uzuuzu/application.rb
|
135
135
|
- lib/uzuuzu/controller.rb
|
136
136
|
- lib/uzuuzu/controller/error.rb
|
137
|
+
- lib/uzuuzu/controller/login/openid.rb
|
138
|
+
- lib/uzuuzu/controller/login/twitter.rb
|
139
|
+
- lib/uzuuzu/controller/logout/index.rb
|
137
140
|
- lib/uzuuzu/controller/view/error/404.rhtml
|
138
141
|
- lib/uzuuzu/controller/view/error/500.rhtml
|
139
|
-
- lib/uzuuzu/datastore/activerecord.rb
|
140
|
-
- lib/uzuuzu/datastore/datamapper.rb
|
141
|
-
- lib/uzuuzu/datastore/sequel.rb
|
142
142
|
- lib/uzuuzu/environments.rb
|
143
143
|
- lib/uzuuzu/ext/object.rb
|
144
144
|
- lib/uzuuzu/helper.rb
|
@@ -149,10 +149,6 @@ files:
|
|
149
149
|
- lib/uzuuzu/helper/renderer.rb
|
150
150
|
- lib/uzuuzu/helper/route.rb
|
151
151
|
- lib/uzuuzu/helper/xhtml.rb
|
152
|
-
- lib/uzuuzu/kvs/appengine.rb
|
153
|
-
- lib/uzuuzu/kvs/hbase.rb
|
154
|
-
- lib/uzuuzu/kvs/leveldb.rb
|
155
|
-
- lib/uzuuzu/kvs/mongo.rb
|
156
152
|
- lib/uzuuzu/lang/en.yaml
|
157
153
|
- lib/uzuuzu/lang/ja.yaml
|
158
154
|
- lib/uzuuzu/logger/appengine.rb
|
@@ -160,16 +156,12 @@ files:
|
|
160
156
|
- lib/uzuuzu/logger/loggers.rb
|
161
157
|
- lib/uzuuzu/logger/stderr.rb
|
162
158
|
- lib/uzuuzu/logger/stdout.rb
|
163
|
-
- lib/uzuuzu/mailer/appengine.rb
|
164
|
-
- lib/uzuuzu/mailer/tmail.rb
|
165
159
|
- lib/uzuuzu/memcache/appengine.rb
|
166
160
|
- lib/uzuuzu/memcache/dalli.rb
|
167
161
|
- lib/uzuuzu/memcache/leveldb.rb
|
168
162
|
- lib/uzuuzu/memcache/memcached.rb
|
169
|
-
- lib/uzuuzu/model.rb
|
170
163
|
- lib/uzuuzu/rack_session/appengine.rb
|
171
164
|
- lib/uzuuzu/rack_session/cookie.rb
|
172
|
-
- lib/uzuuzu/rack_session/datastore.rb
|
173
165
|
- lib/uzuuzu/rack_session/memcache.rb
|
174
166
|
- lib/uzuuzu/request.rb
|
175
167
|
- lib/uzuuzu/response.rb
|
@@ -196,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
196
188
|
requirements:
|
197
189
|
- - ">="
|
198
190
|
- !ruby/object:Gem::Version
|
199
|
-
hash:
|
191
|
+
hash: -441406385150429918
|
200
192
|
segments:
|
201
193
|
- 0
|
202
194
|
version: "0"
|
@@ -1 +0,0 @@
|
|
1
|
-
#TODO
|
@@ -1,222 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require 'dm-core'
|
3
|
-
|
4
|
-
module UzuUzu
|
5
|
-
module Datastore
|
6
|
-
class Datamapper
|
7
|
-
#
|
8
|
-
attr_reader :adapter
|
9
|
-
#
|
10
|
-
attr_reader :repository
|
11
|
-
#
|
12
|
-
attr_reader :auto_upgrade
|
13
|
-
#
|
14
|
-
attr_reader :repositories
|
15
|
-
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
def initialize(env=nil)
|
20
|
-
if env.nil?
|
21
|
-
return
|
22
|
-
end
|
23
|
-
@adapter = :datamapper
|
24
|
-
|
25
|
-
if env['auto_upgrade'] == 'true' || env['auto_upgrade'] = true
|
26
|
-
@auto_upgrade = true
|
27
|
-
end
|
28
|
-
|
29
|
-
if env['repository'].nil?
|
30
|
-
@repository = :uzuuzu
|
31
|
-
else
|
32
|
-
@repository = env['repository'].to_sym
|
33
|
-
end
|
34
|
-
|
35
|
-
@auto_upgrade = false
|
36
|
-
if env['auto_upgrade']
|
37
|
-
@auto_upgrade = true if env['auto_upgrade'] == 'true' || env['auto_upgrade'] == true
|
38
|
-
end
|
39
|
-
|
40
|
-
unless env['logger'].nil?
|
41
|
-
DataMapper::logger = ::UzuUzu::Wrapper::Logger.new(env['logger']).logger
|
42
|
-
end
|
43
|
-
|
44
|
-
@repositories = [@repository]
|
45
|
-
repositories_env = {}
|
46
|
-
repos = env['repositories'] || {}
|
47
|
-
if repos.nil?
|
48
|
-
repos = {}
|
49
|
-
end
|
50
|
-
|
51
|
-
repos.each do |key, value|
|
52
|
-
@repositories.push key.to_sym
|
53
|
-
repositories_env[key.to_sym] = value.clone
|
54
|
-
end
|
55
|
-
|
56
|
-
if repositories_env[@repository].blank?
|
57
|
-
repositories_env[@repository] = repositories_env[:default]
|
58
|
-
elsif repositories_env[:default].blank?
|
59
|
-
repositories_env[:default] = repositories_env[@repository]
|
60
|
-
end
|
61
|
-
|
62
|
-
repositories_env.each do |key, value|
|
63
|
-
if value['adapter']
|
64
|
-
DataMapper.setup(key, value)
|
65
|
-
if value['logger']
|
66
|
-
case(value['adapter'])
|
67
|
-
when 'sqlite3'
|
68
|
-
DataObjects::Sqlite3.logger = ::UzuUzu::Wrapper::Logger.new(value['logger']).logger
|
69
|
-
when 'postgres'
|
70
|
-
DataObjects::Postgres.logger = ::UzuUzu::Wrapper::Logger.new(value['logger']).logger
|
71
|
-
when 'mysql'
|
72
|
-
DataObjects::MySql.logger = ::UzuUzu::Wrapper::Logger.new(value['logger']).logger
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end # new
|
78
|
-
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
def repository(repository=nil, &b)
|
83
|
-
repository ||= @repository
|
84
|
-
if b
|
85
|
-
DataMapper.repository(repository, &b)
|
86
|
-
else
|
87
|
-
DataMapper.repository(repository)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
#
|
92
|
-
#
|
93
|
-
#
|
94
|
-
def transaction(repository=nil, *args, &b)
|
95
|
-
tr = DataMapper::Transaction.new(*args)
|
96
|
-
if b
|
97
|
-
DataMapper.repository(repository) do
|
98
|
-
b.call(tr)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
tr
|
102
|
-
end
|
103
|
-
|
104
|
-
#
|
105
|
-
#
|
106
|
-
#
|
107
|
-
def auto_upgrade?
|
108
|
-
if @auto_upgrade == true
|
109
|
-
return true
|
110
|
-
end
|
111
|
-
false
|
112
|
-
end
|
113
|
-
|
114
|
-
def import_file(model, file, overwrite=false)
|
115
|
-
unless ::File.file?(file)
|
116
|
-
raise "UzuUzu fixture import error file not found : #{file}"
|
117
|
-
end
|
118
|
-
ext = ::File.extname(file)
|
119
|
-
case(ext)
|
120
|
-
when '.yml', '.yaml'
|
121
|
-
import_yaml(model, ::YAML.load_file(file), overwrite)
|
122
|
-
when '.xml'
|
123
|
-
# TODO
|
124
|
-
when '.json', '.js'
|
125
|
-
# TODO
|
126
|
-
when '.csv'
|
127
|
-
begin
|
128
|
-
require 'fastercsv'
|
129
|
-
::FasterCSV.foreach(file) do |row|
|
130
|
-
import_csv(model, row, overwrite)
|
131
|
-
end
|
132
|
-
rescue
|
133
|
-
require "csv"
|
134
|
-
::CSV.open(file) do |row|
|
135
|
-
import_csv(model, row, overwrite)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
nil
|
140
|
-
end
|
141
|
-
|
142
|
-
def import_yaml(model, yaml, overwrite=false)
|
143
|
-
::UzuUzu.logger.debug 'import yaml'
|
144
|
-
transaction do |tr|
|
145
|
-
tr.begin
|
146
|
-
begin
|
147
|
-
if yaml.kind_of?(Array)
|
148
|
-
yaml.each do |map|
|
149
|
-
::UzuUzu.logger.debug "import #{map.inspect}"
|
150
|
-
resource = model.first(:id => map[:id]) unless map[:id].nil?
|
151
|
-
if resource.nil?
|
152
|
-
resource = model.new(map)
|
153
|
-
unless resource.valid?
|
154
|
-
::UzuUzu.logger.error resource.errors
|
155
|
-
end
|
156
|
-
resource.save
|
157
|
-
elsif overwrite
|
158
|
-
resource.update(map)
|
159
|
-
unless resource.valid?
|
160
|
-
::UzuUzu.logger.error resource.errors
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
elsif yaml.kind_of?(Hash)
|
165
|
-
::UzuUzu.logger.debug "import #{yaml.inspect}"
|
166
|
-
resource = model.first(:id => yaml[:id]) unless yaml[:id].nil?
|
167
|
-
if resource.nil?
|
168
|
-
resource = model.new(yaml)
|
169
|
-
unless resource.valid?
|
170
|
-
::UzuUzu.logger.error resource.errors
|
171
|
-
end
|
172
|
-
resource.save
|
173
|
-
elsif overwrite
|
174
|
-
resource.update(yaml)
|
175
|
-
unless resource.valid?
|
176
|
-
::UzuUzu.logger.error resource.errors
|
177
|
-
end
|
178
|
-
end
|
179
|
-
else
|
180
|
-
::UzuUzu.logger.error "import type miss match #{yaml.inspect}"
|
181
|
-
end
|
182
|
-
::UzuUzu.logger.debug 'imported yaml'
|
183
|
-
tr.commit
|
184
|
-
rescue => e
|
185
|
-
tr.rollback
|
186
|
-
raise e
|
187
|
-
end
|
188
|
-
end # transaction
|
189
|
-
end # import_yaml
|
190
|
-
|
191
|
-
def import_json(model, json, overwrite=false)
|
192
|
-
# TODO
|
193
|
-
end
|
194
|
-
|
195
|
-
def import_xml(model, xml, overwrite=false)
|
196
|
-
# TODO
|
197
|
-
end
|
198
|
-
|
199
|
-
def import_csv(model, csv, overwrite=false)
|
200
|
-
transaction do |tr|
|
201
|
-
tr.begin
|
202
|
-
begin
|
203
|
-
resource = model.first(:id => csv[0])
|
204
|
-
csv.each_with_index do |culumn, index|
|
205
|
-
if resource.nil? || overwrite
|
206
|
-
resource ||= model.new
|
207
|
-
resource.properties.each_with_index do |property, column_no|
|
208
|
-
resource[property.name] = culumn if index = column_no
|
209
|
-
end
|
210
|
-
resource.save
|
211
|
-
end
|
212
|
-
end
|
213
|
-
tr.commit
|
214
|
-
rescue => e
|
215
|
-
tr.rollback
|
216
|
-
raise e
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end # import_csv
|
220
|
-
end # Datamapper
|
221
|
-
end # DataStore
|
222
|
-
end # UzuUzu
|
File without changes
|
data/lib/uzuuzu/kvs/appengine.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# TODO
|
3
|
-
require 'appengine-apis'
|
4
|
-
require 'appengine-apis/datastore'
|
5
|
-
|
6
|
-
module UzuUzu
|
7
|
-
module Kvs
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
class Appengine
|
12
|
-
#
|
13
|
-
attr_reader :adapter
|
14
|
-
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
def initialize(env=nil)
|
19
|
-
@adapter = :appengine
|
20
|
-
@db = ::AppEngine::Detastore
|
21
|
-
end
|
22
|
-
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
def space(name)
|
27
|
-
@spaces[name] ||= Space.new(@db, name)
|
28
|
-
end
|
29
|
-
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
class Space
|
34
|
-
def initalize(db, space)
|
35
|
-
@db = db
|
36
|
-
@space = space
|
37
|
-
@resource = @db
|
38
|
-
end
|
39
|
-
|
40
|
-
def get(id)
|
41
|
-
query = Datastore::Query.new(space)
|
42
|
-
query.iterator.first
|
43
|
-
end
|
44
|
-
alias :[] :get
|
45
|
-
|
46
|
-
def put(id, entity)
|
47
|
-
|
48
|
-
end
|
49
|
-
alias :[]= :put
|
50
|
-
|
51
|
-
|
52
|
-
def method_missing(action, *args)
|
53
|
-
@resource.send(action, *args)
|
54
|
-
end # method_missing
|
55
|
-
end # Space
|
56
|
-
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
class Query
|
61
|
-
|
62
|
-
end
|
63
|
-
end # Appengine
|
64
|
-
end # Kvs
|
65
|
-
end # UzuUzu
|
data/lib/uzuuzu/kvs/hbase.rb
DELETED
data/lib/uzuuzu/kvs/leveldb.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# TODO
|
3
|
-
require 'leveldb'
|
4
|
-
|
5
|
-
module UzuUzu
|
6
|
-
module Kvs
|
7
|
-
class Leveldb
|
8
|
-
#
|
9
|
-
attr_reader :adapter
|
10
|
-
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
def initialize(env=nil)
|
15
|
-
@adapter = :leveldb
|
16
|
-
@db = 'db'
|
17
|
-
@spaces = {}
|
18
|
-
unless env && env['address']
|
19
|
-
@db = env['address']
|
20
|
-
end
|
21
|
-
::FileUtils.mkdir_p(::File.dirname(address))
|
22
|
-
end
|
23
|
-
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
def space(name)
|
28
|
-
@spaces[name] ||= Space.new(@db, name)
|
29
|
-
end
|
30
|
-
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
class Space
|
35
|
-
def initalize(db, space)
|
36
|
-
@db = db
|
37
|
-
@space = space
|
38
|
-
@resource = LevelDB::DB.new "#{@db}/#{@space}"
|
39
|
-
end
|
40
|
-
|
41
|
-
def get(entity)
|
42
|
-
Marshal.load(@resource.get(Marshal.dump(key)))
|
43
|
-
end
|
44
|
-
alias :[] :get
|
45
|
-
|
46
|
-
def put(id, entity)
|
47
|
-
@resource.put(Marshal.dump(key), Marshal.dump(entity))
|
48
|
-
end
|
49
|
-
alias :[]= :put
|
50
|
-
|
51
|
-
def find
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
def find_all
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
def collect
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
def sort
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
def method_missing(action, *args)
|
68
|
-
@resource.send(action, *args)
|
69
|
-
end # method_missing
|
70
|
-
end # Space
|
71
|
-
end # Leveldb
|
72
|
-
end # Kvs
|
73
|
-
end # UzuUzu
|
data/lib/uzuuzu/kvs/mongo.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# TODO
|
3
|
-
require 'mongo'
|
4
|
-
|
5
|
-
module UzuUzu
|
6
|
-
module Kvs
|
7
|
-
class Mongo
|
8
|
-
#
|
9
|
-
attr_reader :adapter
|
10
|
-
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
def initialize(env=nil)
|
15
|
-
@adapter = :mongo
|
16
|
-
@host = 'localhost'
|
17
|
-
@port = 27017
|
18
|
-
@db_name = 'uzuuzu'
|
19
|
-
@spaces = {}
|
20
|
-
if env
|
21
|
-
@host = env['host'] || @host
|
22
|
-
@port = env['port'] || @port
|
23
|
-
@db_name = env['db'] || @db_name
|
24
|
-
end
|
25
|
-
@connection = Mongo::Connection.new(@host, @port)
|
26
|
-
@db = @connection.db(@db_name)
|
27
|
-
end
|
28
|
-
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
def space(name)
|
33
|
-
@spaces[name] ||= Space.new(@db, name)
|
34
|
-
end
|
35
|
-
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
class Space
|
40
|
-
def initalize(db, space)
|
41
|
-
@db = db
|
42
|
-
@space = space
|
43
|
-
@resource = @db[name]
|
44
|
-
end
|
45
|
-
|
46
|
-
def get(id)
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
def put(id, entity)
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
def find(params)
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
def find_all(params)
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
def method_missing(action, *args)
|
63
|
-
@resource.send(action, *args)
|
64
|
-
end # method_missing
|
65
|
-
end # Space
|
66
|
-
end # Mongo
|
67
|
-
end # Kvs
|
68
|
-
end # UzuUzu
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require 'appengine-apis'
|
3
|
-
require 'appengine-apis/mail'
|
4
|
-
|
5
|
-
module UzuUzu
|
6
|
-
module Mailer
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
class Appengine
|
11
|
-
#
|
12
|
-
attr_reader :adapter
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
def initialize(env=nil, options={})
|
17
|
-
@adapter = :appengine
|
18
|
-
end # initialize
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
def send(to, subject, body, charset='iso-2022-jp')
|
23
|
-
end # send
|
24
|
-
|
25
|
-
end # Appengine
|
26
|
-
end # Mailer
|
27
|
-
end # UzuUzu
|
data/lib/uzuuzu/mailer/tmail.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require 'net/smtp'
|
3
|
-
require 'tmail'
|
4
|
-
|
5
|
-
module UzuUzu
|
6
|
-
module Mailer
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
class Tmail
|
11
|
-
#
|
12
|
-
attr_reader :adapter
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
def initialize(env=nil, options={})
|
17
|
-
@adapter = :tmail
|
18
|
-
@from = env['address']
|
19
|
-
end # initialize
|
20
|
-
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
def send(to, subject, body, charset='iso-2022-jp')
|
25
|
-
mail = TMail::Mail.new
|
26
|
-
|
27
|
-
mail.to = to
|
28
|
-
mail.from = @from
|
29
|
-
mail.reply_to = @from
|
30
|
-
mail.subject = subject
|
31
|
-
mail.body = body
|
32
|
-
mail.date = Time.now
|
33
|
-
mail.mime_version = '1.0'
|
34
|
-
mail.set_content_type 'text', 'plain', {'charset' => charset}
|
35
|
-
mail.write_back
|
36
|
-
|
37
|
-
Net::SMTP.start(smtpserver) do |smtp|
|
38
|
-
smtp.sendmail(mail.encoded, mail.from, to)
|
39
|
-
end
|
40
|
-
end # send
|
41
|
-
|
42
|
-
end # Tmail
|
43
|
-
end # Mailer
|
44
|
-
end # UzuUzu
|
data/lib/uzuuzu/model.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
module UzuUzu
|
4
|
-
module Model
|
5
|
-
#
|
6
|
-
AppsLoaded = {}
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
def const_missing(id)
|
11
|
-
AppsLoaded[::UzuUzu.current.name] ||= {}
|
12
|
-
model = AppsLoaded[::UzuUzu.current.name][id.to_sym]
|
13
|
-
unless model
|
14
|
-
require_base = self.name.gsub(/::/, '/').sub(/^UzuUzu/, 'uzuuzu').snake_case
|
15
|
-
require "#{require_base}/#{::UzuUzu.datastore.adapter}/#{id.to_s.snake_case}"
|
16
|
-
model = const_get("#{::UzuUzu.datastore.adapter.to_s.camel_case}").const_get("#{id}")
|
17
|
-
model.apploaded if model.respond_to?(:apploaded)
|
18
|
-
AppsLoaded[::UzuUzu.current.name][id.to_sym] = model
|
19
|
-
end
|
20
|
-
if model
|
21
|
-
model
|
22
|
-
else
|
23
|
-
super(id)
|
24
|
-
end
|
25
|
-
rescue => e
|
26
|
-
::UzuUzu.logger.debug e
|
27
|
-
::UzuUzu.logger.debug e.backtrace
|
28
|
-
super(id)
|
29
|
-
end
|
30
|
-
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
def method_missing(id)
|
35
|
-
model = self.const_missing(id.to_s.camel_case)
|
36
|
-
if model
|
37
|
-
model
|
38
|
-
else
|
39
|
-
super(id)
|
40
|
-
end
|
41
|
-
rescue => e
|
42
|
-
::UzuUzu.logger.debug e
|
43
|
-
::UzuUzu.logger.debug e.backtrace
|
44
|
-
super(id)
|
45
|
-
end
|
46
|
-
|
47
|
-
extend self
|
48
|
-
end # Model
|
49
|
-
end # UzuUzu
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
module UzuUzu
|
4
|
-
module RackSession
|
5
|
-
class Datastore
|
6
|
-
#
|
7
|
-
attr_reader :adapter
|
8
|
-
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
def initialize(env=nil)
|
13
|
-
@adapter = :datastore
|
14
|
-
end
|
15
|
-
|
16
|
-
def app(app)
|
17
|
-
# TODO
|
18
|
-
app
|
19
|
-
end
|
20
|
-
end # Leveldb
|
21
|
-
end # Kvs
|
22
|
-
end # UzuUzu
|