egalite 0.0.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/.gitignore +17 -0
- data/README.md +91 -0
- data/auth/basic.rb +32 -0
- data/blank.rb +53 -0
- data/egalite.rb +742 -0
- data/errorconsole.rb +77 -0
- data/examples/simple/example.rb +39 -0
- data/examples/simple/pages/test.html +15 -0
- data/examples/simple_db/example_db.rb +103 -0
- data/examples/simple_db/pages/edit.html +6 -0
- data/helper.rb +251 -0
- data/keitai/keitai.rb +107 -0
- data/keitai/ketai.rb +11 -0
- data/keitai/rack/ketai/carrier/abstract.rb +131 -0
- data/keitai/rack/ketai/carrier/au.rb +78 -0
- data/keitai/rack/ketai/carrier/docomo.rb +80 -0
- data/keitai/rack/ketai/carrier/emoji/ausjisstrtoemojiid.rb +1391 -0
- data/keitai/rack/ketai/carrier/emoji/docomosjisstrtoemojiid.rb +759 -0
- data/keitai/rack/ketai/carrier/emoji/emojidata.rb +836 -0
- data/keitai/rack/ketai/carrier/emoji/softbankutf8strtoemojiid.rb +1119 -0
- data/keitai/rack/ketai/carrier/emoji/softbankwebcodetoutf8str.rb +499 -0
- data/keitai/rack/ketai/carrier/iphone.rb +8 -0
- data/keitai/rack/ketai/carrier/softbank.rb +82 -0
- data/keitai/rack/ketai/carrier.rb +17 -0
- data/keitai/rack/ketai/middleware.rb +24 -0
- data/m17n.rb +193 -0
- data/rack/auth/abstract/handler.rb +37 -0
- data/rack/auth/abstract/request.rb +37 -0
- data/rack/auth/basic.rb +58 -0
- data/rack/auth/digest/md5.rb +124 -0
- data/rack/auth/digest/nonce.rb +51 -0
- data/rack/auth/digest/params.rb +55 -0
- data/rack/auth/digest/request.rb +40 -0
- data/rack/builder.rb +80 -0
- data/rack/cascade.rb +41 -0
- data/rack/chunked.rb +49 -0
- data/rack/commonlogger.rb +49 -0
- data/rack/conditionalget.rb +47 -0
- data/rack/config.rb +15 -0
- data/rack/content_length.rb +29 -0
- data/rack/content_type.rb +23 -0
- data/rack/deflater.rb +96 -0
- data/rack/directory.rb +157 -0
- data/rack/etag.rb +32 -0
- data/rack/file.rb +92 -0
- data/rack/handler/cgi.rb +62 -0
- data/rack/handler/evented_mongrel.rb +8 -0
- data/rack/handler/fastcgi.rb +89 -0
- data/rack/handler/lsws.rb +63 -0
- data/rack/handler/mongrel.rb +90 -0
- data/rack/handler/scgi.rb +59 -0
- data/rack/handler/swiftiplied_mongrel.rb +8 -0
- data/rack/handler/thin.rb +18 -0
- data/rack/handler/webrick.rb +73 -0
- data/rack/handler.rb +88 -0
- data/rack/head.rb +19 -0
- data/rack/lint.rb +567 -0
- data/rack/lobster.rb +65 -0
- data/rack/lock.rb +16 -0
- data/rack/logger.rb +20 -0
- data/rack/methodoverride.rb +27 -0
- data/rack/mime.rb +208 -0
- data/rack/mock.rb +190 -0
- data/rack/nulllogger.rb +18 -0
- data/rack/recursive.rb +61 -0
- data/rack/reloader.rb +109 -0
- data/rack/request.rb +273 -0
- data/rack/response.rb +150 -0
- data/rack/rewindable_input.rb +103 -0
- data/rack/runtime.rb +27 -0
- data/rack/sendfile.rb +144 -0
- data/rack/server.rb +271 -0
- data/rack/session/abstract/id.rb +140 -0
- data/rack/session/cookie.rb +90 -0
- data/rack/session/memcache.rb +119 -0
- data/rack/session/pool.rb +100 -0
- data/rack/showexceptions.rb +349 -0
- data/rack/showstatus.rb +106 -0
- data/rack/static.rb +38 -0
- data/rack/urlmap.rb +55 -0
- data/rack/utils.rb +662 -0
- data/rack.rb +81 -0
- data/route.rb +231 -0
- data/sendmail.rb +222 -0
- data/sequel_helper.rb +20 -0
- data/session.rb +132 -0
- data/stringify_hash.rb +63 -0
- data/support.rb +35 -0
- data/template.rb +287 -0
- data/test/french.html +13 -0
- data/test/french_msg.html +3 -0
- data/test/m17n.txt +30 -0
- data/test/mobile.html +15 -0
- data/test/setup.rb +8 -0
- data/test/static/test.txt +1 -0
- data/test/template.html +58 -0
- data/test/template_inner.html +1 -0
- data/test/template_innerparam.html +1 -0
- data/test/test_auth.rb +43 -0
- data/test/test_blank.rb +44 -0
- data/test/test_csrf.rb +87 -0
- data/test/test_errorconsole.rb +91 -0
- data/test/test_handler.rb +155 -0
- data/test/test_helper.rb +296 -0
- data/test/test_keitai.rb +107 -0
- data/test/test_m17n.rb +129 -0
- data/test/test_route.rb +192 -0
- data/test/test_sendmail.rb +146 -0
- data/test/test_session.rb +83 -0
- data/test/test_stringify_hash.rb +67 -0
- data/test/test_template.rb +114 -0
- data/test.bat +2 -0
- metadata +240 -0
data/.gitignore
ADDED
data/README.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# Egalite
|
2
|
+
|
3
|
+
Egaliteは、Ruby用のウェブアプリケーションフレームワークです。自社用に使っているフレームワークですが、使う人の利便性などを考えてオープンソースにしてgemで公開しています。
|
4
|
+
|
5
|
+
## 概要
|
6
|
+
|
7
|
+
いわゆるMVC構造のフレームワークです。O/RマッパーとしてはSequelを使うことを想定しています。モデルはSequelをそのまま使いますので、本ドキュメントでは言及しません。
|
8
|
+
|
9
|
+
ビューは独自のテンプレートエンジンを使用しており、HTMLからコードをなるべく廃するという思想で作っています。
|
10
|
+
|
11
|
+
## コントローラーの基本
|
12
|
+
|
13
|
+
class FooController < Egalite::Controller
|
14
|
+
def bar(id)
|
15
|
+
"#{id}ですよ"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
このようなアクションは/foo/bar/<id>のURLで呼び出され、引数としてidが引き渡されます。出力としては文字列がそのままtext/htmlのcontent-typeで出力されます。
|
20
|
+
|
21
|
+
### デフォルトコントローラーとデフォルトアクション
|
22
|
+
|
23
|
+
class DefaultController < Egalite::Controller
|
24
|
+
def get
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
このアクションは他のコントローラーで引っかけられなかったすべてのアクセスを引き取ります。実際のURLパスはreq.pathというメソッドで取得できます。
|
29
|
+
|
30
|
+
### コントローラーの戻り値
|
31
|
+
|
32
|
+
コントローラーは戻り値として、Hash, Array, Stringを返すことができます。
|
33
|
+
|
34
|
+
Stringを返した場合は、通常のHTMLとして出力します。
|
35
|
+
|
36
|
+
Arrayを返した場合は、Rackの標準的な出力形式として扱います。すなわち``[200, {"Content-Type" => "text/html"}, "hoge"]``のように、HTTPステータスコード、レスポンスヘッダ、出力文字列の格納された配列とみなします。
|
37
|
+
|
38
|
+
Hashを返した場合は、テンプレートエンジンにHashが引き渡され、テンプレートにある対応するプレースホルダにHashの内容が埋め込まれます。Hashの代わりにSequelのモデルインスタンスを渡すこともできます。
|
39
|
+
|
40
|
+
### params
|
41
|
+
|
42
|
+
URL以外で引き渡されるパラメーター(クエリパラメータやPOSTパラメータ)はparamsというメソッド経由で参照することができます。paramsというメソッドはパラメーターの格納されたHashを返します。
|
43
|
+
|
44
|
+
class FooController < Egalite::Controller
|
45
|
+
def post(id)
|
46
|
+
"#{params[:hoge]}: #{id}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
このコントローラーが定義されている場合、/foo/524にhoge=piyoというパラメータでPOSTでアクセスした場合、出力として"piyo: 524"という文字列が出力されます。
|
51
|
+
|
52
|
+
## コントローラーのより複雑な使い方
|
53
|
+
|
54
|
+
### フック (filter)
|
55
|
+
|
56
|
+
class MainPages < Egalite::Controller
|
57
|
+
def before_filter
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
### アクセス制御イディオム
|
62
|
+
|
63
|
+
## ビューの基本
|
64
|
+
|
65
|
+
<html>
|
66
|
+
<body>
|
67
|
+
プレースホルダ: &=placeholder;
|
68
|
+
|
69
|
+
配列の展開:
|
70
|
+
<group name='foo'>
|
71
|
+
</group>
|
72
|
+
|
73
|
+
if文:
|
74
|
+
<if name='bar'>
|
75
|
+
</if>
|
76
|
+
|
77
|
+
unless文:
|
78
|
+
<unless name='bar'>
|
79
|
+
</unless>
|
80
|
+
|
81
|
+
ネストしたHashもしくはメソッドへのアクセス: &=.hoge.piyo;
|
82
|
+
|
83
|
+
include文:
|
84
|
+
<include >
|
85
|
+
|
86
|
+
</body>
|
87
|
+
</html>
|
88
|
+
|
89
|
+
### フォームへの自動埋め込み
|
90
|
+
|
91
|
+
|
data/auth/basic.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
module Egalite
|
3
|
+
module Auth
|
4
|
+
class Basic
|
5
|
+
def self.authorize(req,realm)
|
6
|
+
auth = req.authorization
|
7
|
+
return unauthorized(realm) if auth.blank?
|
8
|
+
(method,credentials) = auth.split(' ', 2)
|
9
|
+
return bad_request if method.downcase != "basic"
|
10
|
+
(username,password) = credentials.unpack("m*").first.split(/:/,2)
|
11
|
+
return unauthorized(realm) unless yield(username,password)
|
12
|
+
true
|
13
|
+
end
|
14
|
+
def self.unauthorized(realm)
|
15
|
+
return [ 401,
|
16
|
+
{ 'Content-Type' => 'text/plain',
|
17
|
+
'Content-Length' => '0',
|
18
|
+
'WWW-Authenticate' => 'Basic realm="%s"' % realm },
|
19
|
+
[]
|
20
|
+
]
|
21
|
+
end
|
22
|
+
def self.bad_request
|
23
|
+
return [ 400,
|
24
|
+
{ 'Content-Type' => 'text/plain',
|
25
|
+
'Content-Length' => '0' },
|
26
|
+
[]
|
27
|
+
]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
data/blank.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# I stole it from ActiveSupport library of Ruby on Rails
|
2
|
+
# (MIT License)
|
3
|
+
|
4
|
+
class Object
|
5
|
+
# An object is blank if it's nil, empty, or a whitespace string.
|
6
|
+
# For example, "", " ", nil, [], and {} are blank.
|
7
|
+
#
|
8
|
+
# This simplifies
|
9
|
+
# if !address.nil? && !address.empty?
|
10
|
+
# to
|
11
|
+
# if !address.blank?
|
12
|
+
def blank?
|
13
|
+
respond_to?(:empty?) ? empty? : !self
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class NilClass #:nodoc:
|
18
|
+
def blank?
|
19
|
+
true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class FalseClass #:nodoc:
|
24
|
+
def blank?
|
25
|
+
true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class TrueClass #:nodoc:
|
30
|
+
def blank?
|
31
|
+
false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class Array #:nodoc:
|
36
|
+
alias_method :blank?, :empty?
|
37
|
+
end
|
38
|
+
|
39
|
+
class Hash #:nodoc:
|
40
|
+
alias_method :blank?, :empty?
|
41
|
+
end
|
42
|
+
|
43
|
+
class String #:nodoc:
|
44
|
+
def blank?
|
45
|
+
self !~ /\S/
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Numeric #:nodoc:
|
50
|
+
def blank?
|
51
|
+
false
|
52
|
+
end
|
53
|
+
end
|