uzuuzu-core 0.0.8 → 0.0.9
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/{wrapper/application.rb → application.rb} +2 -1
- data/lib/uzuuzu/{wrapper/controller.rb → controller.rb} +1 -15
- data/lib/uzuuzu/controller/error.rb +11 -0
- data/lib/uzuuzu/controller/view/error/404.rhtml +6 -0
- data/lib/uzuuzu/controller/view/error/500.rhtml +6 -0
- data/lib/uzuuzu/datastore/activerecord.rb +1 -0
- data/lib/uzuuzu/datastore/datamapper.rb +116 -0
- data/lib/uzuuzu/datastore/sequel.rb +0 -0
- data/lib/uzuuzu/{wrapper/environments.rb → environments.rb} +29 -46
- data/lib/uzuuzu/{wrapper → ext}/object.rb +0 -0
- data/lib/uzuuzu/fixture/datamapper.rb +114 -0
- data/lib/uzuuzu/{wrapper/helper.rb → helper.rb} +1 -0
- data/lib/uzuuzu/helper/uzuuzu.rb +48 -0
- data/lib/uzuuzu/kvs/appengine.rb +65 -0
- data/lib/uzuuzu/kvs/hbase.rb +2 -0
- data/lib/uzuuzu/kvs/leveldb.rb +73 -0
- data/lib/uzuuzu/kvs/mongo.rb +68 -0
- data/lib/uzuuzu/{wrapper/lang → lang}/en.yaml +0 -0
- data/lib/uzuuzu/{wrapper/lang → lang}/ja.yaml +0 -0
- data/lib/uzuuzu/logger/appengine.rb +51 -0
- data/lib/uzuuzu/logger/file.rb +50 -0
- data/lib/uzuuzu/logger/loggers.rb +47 -0
- data/lib/uzuuzu/logger/stderr.rb +50 -0
- data/lib/uzuuzu/logger/stdout.rb +50 -0
- data/lib/uzuuzu/mailer/appengine.rb +27 -0
- data/lib/uzuuzu/mailer/tmail.rb +44 -0
- data/lib/uzuuzu/memcache/appengine.rb +29 -0
- data/lib/uzuuzu/memcache/dalli.rb +31 -0
- data/lib/uzuuzu/memcache/leveldb.rb +43 -0
- data/lib/uzuuzu/memcache/memcached.rb +23 -0
- data/lib/uzuuzu/rack_session/appengine.rb +40 -0
- data/lib/uzuuzu/rack_session/cookie.rb +25 -0
- data/lib/uzuuzu/rack_session/datastore.rb +22 -0
- data/lib/uzuuzu/rack_session/memcache.rb +67 -0
- data/lib/uzuuzu/{wrapper/request.rb → request.rb} +0 -0
- data/lib/uzuuzu/{wrapper/response.rb → response.rb} +0 -1
- data/lib/uzuuzu/{wrapper/tilt.rb → tilt.rb} +3 -3
- data/lib/uzuuzu/wrapper/logger.rb +23 -103
- data/lib/uzuuzu/wrapper/uzuuzu.rb +22 -42
- data/lib/uzuuzu/wrapper/wrapper.rb +31 -0
- data/lib/uzuuzu_core.rb +19 -0
- data/uzuuzu-core.gemspec +41 -17
- metadata +42 -18
- data/lib/uzuuzu-core.rb +0 -9
- data/lib/uzuuzu/uzuuzu-core.rb +0 -17
- data/lib/uzuuzu/wrapper/datastore.rb +0 -55
- data/lib/uzuuzu/wrapper/mailer.rb +0 -20
- data/lib/uzuuzu/wrapper/memcache.rb +0 -20
@@ -0,0 +1,50 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
module UzuUzu
|
5
|
+
module Logger
|
6
|
+
class Stdout
|
7
|
+
#
|
8
|
+
attr_reader :adapter
|
9
|
+
#
|
10
|
+
#
|
11
|
+
#
|
12
|
+
def initialize(env=nil)
|
13
|
+
@adapter = :stdout
|
14
|
+
@logger = ::Logger.new($stdout)
|
15
|
+
level = env['level'] || :debug
|
16
|
+
case(level.to_sym)
|
17
|
+
when :info
|
18
|
+
@logger.level = ::Logger::Severity::INFO
|
19
|
+
when :warn
|
20
|
+
@logger.level = ::Logger::Severity::WARN
|
21
|
+
when :error
|
22
|
+
@logger.level = ::Logger::Severity::ERROR
|
23
|
+
when :fatal
|
24
|
+
@logger.level = ::Logger::Severity::FATAL
|
25
|
+
when :unknown
|
26
|
+
@logger.level = ::Logger::Severity::UNKNOWN
|
27
|
+
else
|
28
|
+
@logger.level = ::Logger::Severity::DEBUG
|
29
|
+
end
|
30
|
+
end # initialize
|
31
|
+
#
|
32
|
+
#
|
33
|
+
#
|
34
|
+
def method_missing(action, *args)
|
35
|
+
begin
|
36
|
+
args.each do |message|
|
37
|
+
message = message.to_str if message.respond_to?(:to_str)
|
38
|
+
message = message.inspect unless message.instance_of?(String)
|
39
|
+
@logger.send(action, message)
|
40
|
+
end
|
41
|
+
rescue => e
|
42
|
+
# puts standerd error output
|
43
|
+
$stderr.puts 'logger unknown error'
|
44
|
+
$stderr.puts e
|
45
|
+
end
|
46
|
+
end # method_missing
|
47
|
+
|
48
|
+
end # Stdout
|
49
|
+
end # Logger
|
50
|
+
end # UzuUzu
|
@@ -0,0 +1,27 @@
|
|
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
|
@@ -0,0 +1,44 @@
|
|
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
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'appengine-apis'
|
3
|
+
require 'appengine-apis/memcache'
|
4
|
+
|
5
|
+
module UzuUzu
|
6
|
+
module Memcache
|
7
|
+
#
|
8
|
+
#
|
9
|
+
#
|
10
|
+
class Appengine
|
11
|
+
#
|
12
|
+
attr_reader :adapter
|
13
|
+
#
|
14
|
+
#
|
15
|
+
#
|
16
|
+
def initialize(env=nil)
|
17
|
+
@adapter = :appengine
|
18
|
+
@memcache = ::AppEngine::Memcache.new
|
19
|
+
end #new
|
20
|
+
|
21
|
+
#
|
22
|
+
#
|
23
|
+
#
|
24
|
+
def method_missing(action, *args)
|
25
|
+
@memcahce.send(action, args)
|
26
|
+
end
|
27
|
+
end # Appengine
|
28
|
+
end # Memcache
|
29
|
+
end # UzuUzu
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'dalli'
|
3
|
+
|
4
|
+
module UzuUzu
|
5
|
+
module Memcache
|
6
|
+
#
|
7
|
+
#
|
8
|
+
#
|
9
|
+
class Dalli
|
10
|
+
#
|
11
|
+
attr_reader :adapter
|
12
|
+
#
|
13
|
+
#
|
14
|
+
#
|
15
|
+
def initialize(env=nil)
|
16
|
+
@adapter = :dalli
|
17
|
+
if env.blank? or env['address'].blank?
|
18
|
+
return
|
19
|
+
end
|
20
|
+
@memcache = Dalli::Client.new("#{env['address']}")
|
21
|
+
end #new
|
22
|
+
|
23
|
+
#
|
24
|
+
#
|
25
|
+
#
|
26
|
+
def method_missing(action, *args)
|
27
|
+
@memcahce.send(action, args)
|
28
|
+
end
|
29
|
+
end # Memcacheclient
|
30
|
+
end # Memcache
|
31
|
+
end # UzuUzu
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'leveldb'
|
3
|
+
|
4
|
+
module UzuUzu
|
5
|
+
module Memcache
|
6
|
+
class Leveldb
|
7
|
+
#
|
8
|
+
attr_reader :adapter
|
9
|
+
|
10
|
+
#
|
11
|
+
#
|
12
|
+
#
|
13
|
+
def initialize(env=nil)
|
14
|
+
@adapter = :leveldb
|
15
|
+
address = 'cache'
|
16
|
+
space = 'leveldb'
|
17
|
+
if env
|
18
|
+
address = env['address'] || address
|
19
|
+
space = env['space'] || UzuUzu.application.name || space
|
20
|
+
end
|
21
|
+
::FileUtils.mkdir_p(::File.dirname(address))
|
22
|
+
@db = LevelDB::DB.new("#{address}/#{space}")
|
23
|
+
end
|
24
|
+
|
25
|
+
def get(key)
|
26
|
+
@db.get(key.to_s)
|
27
|
+
end
|
28
|
+
alias :[] :get
|
29
|
+
|
30
|
+
def put(key, value)
|
31
|
+
@db.put(key.to_s, value)
|
32
|
+
end
|
33
|
+
alias :[]= :put
|
34
|
+
|
35
|
+
#
|
36
|
+
#
|
37
|
+
#
|
38
|
+
def method_missing(action, *args)
|
39
|
+
@db.send(action, *args)
|
40
|
+
end # method_missing
|
41
|
+
end # Leveldb
|
42
|
+
end # Memcache
|
43
|
+
end # UzuUzu
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'memcached'
|
3
|
+
|
4
|
+
module UzuUzu
|
5
|
+
module Memcache
|
6
|
+
#
|
7
|
+
#
|
8
|
+
#
|
9
|
+
class Memcached
|
10
|
+
def initialize(env=nil)
|
11
|
+
if env.blank? or env['address'].blank?
|
12
|
+
return
|
13
|
+
end
|
14
|
+
|
15
|
+
@memcache = Memcached.new("#{env['address']}")
|
16
|
+
end #new
|
17
|
+
|
18
|
+
def method_missing(action, *args)
|
19
|
+
@memcahce.send(action, args)
|
20
|
+
end
|
21
|
+
end # Memcacheclient
|
22
|
+
end # Memcache
|
23
|
+
end # UzuUzu
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module UzuUzu
|
4
|
+
module RackSession
|
5
|
+
class Appengine < ::Rack::Session::Abstract::ID
|
6
|
+
#
|
7
|
+
attr_reader :adapter
|
8
|
+
|
9
|
+
#
|
10
|
+
#
|
11
|
+
#
|
12
|
+
def initialize(env=nil)
|
13
|
+
@adapter = :appengine
|
14
|
+
super(nil, env)
|
15
|
+
end
|
16
|
+
|
17
|
+
def app(app)
|
18
|
+
@app = app
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_sid
|
22
|
+
loop do
|
23
|
+
sid = super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_session(env, sid)
|
28
|
+
#TODO
|
29
|
+
end
|
30
|
+
|
31
|
+
def set_session(env, session_id, new_session, options)
|
32
|
+
#TODO
|
33
|
+
end
|
34
|
+
|
35
|
+
def destroy_session(env, session_id, options)
|
36
|
+
#TODO
|
37
|
+
end
|
38
|
+
end # Leveldb
|
39
|
+
end # Kvs
|
40
|
+
end # UzuUzu
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module UzuUzu
|
4
|
+
module RackSession
|
5
|
+
class Cookie
|
6
|
+
#
|
7
|
+
attr_reader :adapter
|
8
|
+
|
9
|
+
#
|
10
|
+
#
|
11
|
+
#
|
12
|
+
def initialize(env=nil)
|
13
|
+
@adapter = :cookie
|
14
|
+
@secret = 'uzuuzu'
|
15
|
+
if env
|
16
|
+
@secret = env['secret'] || @secret
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def app(app)
|
21
|
+
Rack::Session::Cookie.new(app, :secret => @secret)
|
22
|
+
end
|
23
|
+
end # Leveldb
|
24
|
+
end # Kvs
|
25
|
+
end # UzuUzu
|
@@ -0,0 +1,22 @@
|
|
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
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'rack/session/abstract/id'
|
3
|
+
|
4
|
+
module UzuUzu
|
5
|
+
module RackSession
|
6
|
+
class Memcache < ::Rack::Session::Abstract::ID
|
7
|
+
#
|
8
|
+
attr_reader :adapter
|
9
|
+
|
10
|
+
#
|
11
|
+
#
|
12
|
+
#
|
13
|
+
def initialize(env=nil)
|
14
|
+
@adapter = :memcache
|
15
|
+
super(nil, env)
|
16
|
+
@mutex = Mutex.new
|
17
|
+
@pool = ::UzuUzu::Wrapper::Wrapper.new('memcache', env['env']).wrapper
|
18
|
+
end
|
19
|
+
|
20
|
+
def app(app)
|
21
|
+
@app = app
|
22
|
+
end
|
23
|
+
|
24
|
+
def generate_sid
|
25
|
+
loop do
|
26
|
+
sid = super
|
27
|
+
break sid unless @pool.get(sid)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_session(env, sid)
|
32
|
+
with_lock(env, [nil, {}]) do
|
33
|
+
unless sid and session = @pool.get(sid)
|
34
|
+
sid, session = generate_sid, {}
|
35
|
+
unless /^STORED/ =~ @pool.add(sid, session)
|
36
|
+
raise "Session collision on '#{sid.inspect}'"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
[sid, session]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def set_session(env, session_id, new_session, options)
|
44
|
+
with_lock(env, false) do
|
45
|
+
@pool.set session_id, new_session
|
46
|
+
session_id
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def destroy_session(env, session_id, options)
|
51
|
+
with_lock(env) do
|
52
|
+
@pool.delete(session_id)
|
53
|
+
generate_sid unless options[:drop]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def with_lock(env, default=nil)
|
58
|
+
@mutex.lock if env['rack.multithread']
|
59
|
+
yield
|
60
|
+
rescue
|
61
|
+
default
|
62
|
+
ensure
|
63
|
+
@mutex.unlock if @mutex.locked?
|
64
|
+
end
|
65
|
+
end # Leveldb
|
66
|
+
end # Kvs
|
67
|
+
end # UzuUzu
|
File without changes
|
@@ -4,11 +4,11 @@ module UzuUzu
|
|
4
4
|
#
|
5
5
|
#
|
6
6
|
#
|
7
|
-
module
|
7
|
+
module Tilt
|
8
8
|
#
|
9
9
|
#
|
10
10
|
#
|
11
|
-
def self.render_engine(instance, view_string, engine
|
11
|
+
def self.render_engine(instance, view_string, engine='erb', options={}, locals={}, &block)
|
12
12
|
template = ::Tilt[engine.to_s].new { |t| view_string.force_encoding('UTF-8') }
|
13
13
|
contents = template.render(instance, locals, &block)
|
14
14
|
unless options.blank?
|
@@ -27,5 +27,5 @@ module UzuUzu
|
|
27
27
|
end
|
28
28
|
contents
|
29
29
|
end # self.render_engine
|
30
|
-
end #
|
30
|
+
end # Tilt
|
31
31
|
end # UzuUzu
|