jpmobile 0.0.8 → 0.1.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -3
- data/{spec/spec.opts → .rspec} +1 -2
- data/README.rdoc +122 -128
- data/Rakefile +23 -101
- data/VERSION.yml +4 -3
- data/jpmobile.gemspec +130 -182
- data/lib/jpmobile.rb +37 -24
- data/lib/jpmobile/docomo_guid.rb +2 -1
- data/lib/jpmobile/email.rb +3 -4
- data/lib/jpmobile/emoticon.rb +2 -6
- data/lib/jpmobile/encoding.rb +29 -0
- data/lib/jpmobile/filter.rb +42 -134
- data/lib/jpmobile/helpers.rb +5 -18
- data/lib/jpmobile/hook_action_controller.rb +24 -16
- data/lib/jpmobile/hook_action_view.rb +28 -89
- data/lib/jpmobile/mobile/abstract_mobile.rb +21 -4
- data/lib/jpmobile/mobile/android.rb +10 -0
- data/lib/jpmobile/mobile/au.rb +28 -3
- data/lib/jpmobile/mobile/ddipocket.rb +12 -0
- data/lib/jpmobile/mobile/display.rb +29 -26
- data/lib/jpmobile/mobile/docomo.rb +38 -12
- data/lib/jpmobile/mobile/iphone.rb +26 -0
- data/lib/jpmobile/mobile/smart_phone.rb +21 -0
- data/lib/jpmobile/mobile/softbank.rb +16 -41
- data/lib/jpmobile/mobile/vodafone.rb +17 -0
- data/lib/jpmobile/mobile/willcom.rb +1 -10
- data/lib/jpmobile/mobile/windows_phone.rb +10 -0
- data/lib/jpmobile/position.rb +4 -3
- data/lib/jpmobile/rack.rb +43 -0
- data/lib/jpmobile/rack/filter.rb +51 -0
- data/lib/jpmobile/rack/mobile_carrier.rb +33 -0
- data/lib/jpmobile/rack/params_filter.rb +47 -0
- data/lib/jpmobile/rails.rb +22 -0
- data/lib/jpmobile/request_with_mobile.rb +8 -12
- data/lib/jpmobile/trans_sid.rb +44 -26
- data/lib/jpmobile/util.rb +68 -0
- data/{tasks → lib/tasks}/jpmobile_tasks.rake +32 -13
- data/spec/rack/jpmobile/android_spec.rb +20 -0
- data/spec/rack/jpmobile/au_spec.rb +206 -0
- data/spec/rack/jpmobile/docomo_spec.rb +237 -0
- data/spec/rack/jpmobile/emoticon_spec.rb +215 -0
- data/spec/rack/jpmobile/filter_spec.rb +181 -0
- data/spec/rack/jpmobile/iphone_spec.rb +32 -0
- data/spec/rack/jpmobile/mobile_by_ua_spec.rb +39 -0
- data/spec/rack/jpmobile/params_filter_spec.rb +193 -0
- data/spec/rack/jpmobile/softbank_spec.rb +123 -0
- data/spec/rack/jpmobile/willcom_spec.rb +67 -0
- data/spec/rack/jpmobile/windows_phone.rb +20 -0
- data/spec/rack_helper.rb +86 -0
- data/spec/spec_helper.rb +3 -2
- data/spec/unit/detect_by_email_spec.rb +21 -27
- data/spec/unit/is_carrier_spec.rb +56 -84
- data/spec/unit/spec_helper.rb +1 -2
- data/spec/unit/util_spec.rb +2 -2
- data/spec/unit/valid_ip_spec.rb +43 -52
- data/test/legacy/autoload_test.rb +1 -3
- data/test/legacy/emoticon_test.rb +5 -6
- data/test/legacy/helper.rb +0 -71
- data/test/rails/overrides/.rspec +5 -0
- data/test/rails/overrides/Gemfile +32 -0
- data/test/rails/overrides/app/controllers/docomo_guid_always_controller.rb +3 -0
- data/test/rails/overrides/app/controllers/docomo_guid_base_controller.rb +5 -0
- data/test/rails/overrides/app/controllers/docomo_guid_docomo_controller.rb +3 -0
- data/test/rails/overrides/app/controllers/filter_controller.rb +0 -34
- data/test/rails/overrides/app/controllers/filter_controller_base.rb +19 -0
- data/test/rails/overrides/app/controllers/hankaku_filter_controller.rb +3 -0
- data/test/rails/overrides/app/controllers/links_controller.rb +28 -0
- data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
- data/test/rails/overrides/app/controllers/template_path_controller.rb +3 -0
- data/test/rails/overrides/app/controllers/trans_sid_always_and_session_off_controller.rb +4 -0
- data/test/rails/overrides/app/controllers/trans_sid_always_controller.rb +3 -0
- data/test/rails/overrides/app/controllers/trans_sid_base_controller.rb +18 -0
- data/test/rails/overrides/app/controllers/trans_sid_mobile_controller.rb +3 -0
- data/test/rails/overrides/app/controllers/trans_sid_none_controller.rb +3 -0
- data/test/rails/overrides/app/views/links/au_gps.html.erb +1 -0
- data/test/rails/overrides/app/views/links/au_location.html.erb +1 -0
- data/test/rails/overrides/app/views/links/docomo_foma_gps.html.erb +1 -0
- data/test/rails/overrides/app/views/links/docomo_openiarea.html.erb +1 -0
- data/test/rails/overrides/app/views/links/docomo_utn.html.erb +1 -0
- data/test/rails/overrides/app/views/links/link.html.erb +1 -0
- data/test/rails/overrides/app/views/links/show_all.html.erb +1 -0
- data/test/rails/overrides/app/views/links/softbank_location.html.erb +1 -0
- data/test/rails/overrides/app/views/links/willcom_location.html.erb +1 -0
- data/test/rails/overrides/app/views/template_path/_partial_smart_phone.html.erb +1 -0
- data/test/rails/overrides/app/views/template_path/_partial_smart_phone_iphone.html.erb +1 -0
- data/test/rails/overrides/app/views/template_path/index_smart_phone.html.erb +1 -0
- data/test/rails/overrides/app/views/template_path/index_smart_phone_iphone.html.erb +1 -0
- data/test/rails/overrides/app/views/template_path/show_mobile.html.erb +1 -0
- data/test/rails/overrides/app/views/template_path/show_mobile_docomo.html.erb +1 -0
- data/test/rails/overrides/autotest/discover.rb +2 -0
- data/test/rails/overrides/config/initializers/jpmobile_generator.rb +1 -0
- data/test/rails/overrides/config/routes.rb +58 -0
- data/test/rails/overrides/db/migrate/001_add_sessions_table.rb +16 -0
- data/test/rails/overrides/spec/helpers/helpers_spec.rb +2 -2
- data/test/rails/overrides/spec/{controllers → requests}/docomo_guid_spec.rb +37 -14
- data/test/rails/overrides/spec/{controllers → requests}/docomo_spec.rb +11 -8
- data/test/rails/overrides/spec/{controllers → requests}/emobile_spec.rb +24 -8
- data/test/rails/overrides/spec/requests/filter_spec.rb +171 -0
- data/test/rails/overrides/spec/requests/helpers_spec.rb +187 -0
- data/test/rails/overrides/spec/requests/pc_spec.rb +22 -0
- data/test/rails/overrides/spec/requests/softbank_emulator_spec.rb +21 -0
- data/test/rails/overrides/spec/requests/template_path_spec.rb +234 -0
- data/test/rails/overrides/spec/requests/trans_sid_spec.rb +142 -0
- data/test/rails/overrides/spec/spec_helper.rb +17 -48
- data/test/sinatra/guestbook.rb +40 -0
- data/test/sinatra/test/filter_test.rb +39 -0
- metadata +185 -312
- data/lib/jpmobile/hook_request.rb +0 -5
- data/lib/jpmobile/rack/auth.rb +0 -55
- data/lib/jpmobile/rack/combined_logger.rb +0 -54
- data/lib/jpmobile/rack/request.rb +0 -7
- data/lib/jpmobile/rack/trans_sid.rb +0 -14
- data/lib/jpmobile/version.rb +0 -9
- data/spec/unit/detect_by_ua_spec.rb +0 -40
- data/test/legacy/au_test.rb +0 -173
- data/test/legacy/docomo_test.rb +0 -187
- data/test/legacy/emoticon_functional_test.rb +0 -195
- data/test/legacy/filter_test.rb +0 -34
- data/test/legacy/helpers_test.rb +0 -217
- data/test/legacy/softbank_test.rb +0 -183
- data/test/legacy/willcom_test.rb +0 -56
- data/test/rails/2.3.2/spec/controllers/trans_sid_spec.rb +0 -99
- data/test/rails/overrides/app/controllers/docomo_guid_controller.rb +0 -13
- data/test/rails/overrides/app/controllers/trans_sid_controller.rb +0 -28
- data/test/rails/overrides/lib/tasks/rspec.rake +0 -165
- data/test/rails/overrides/spec/controllers/filter_spec.rb +0 -159
- data/test/rails/overrides/spec/controllers/pc_spec.rb +0 -13
- data/test/rails/overrides/spec/controllers/softbank_emulator_spec.rb +0 -42
- data/test/rails/overrides/spec/controllers/template_path_spec.rb +0 -117
- data/test/rails/overrides/spec/controllers/trans_sid_spec.rb +0 -117
- data/test/rails/overrides/spec/rspec.rake +0 -165
- data/test/rails/overrides/spec/spec.opts +0 -4
data/.gitignore
CHANGED
data/{spec/spec.opts → .rspec}
RENAMED
data/README.rdoc
CHANGED
@@ -1,74 +1,68 @@
|
|
1
1
|
= jpmobile: A Rails plugin for Japanese mobile-phones
|
2
2
|
|
3
3
|
== jpmobileとは
|
4
|
-
携帯電話特有の機能を Rails で利用するためのプラグイン。
|
4
|
+
携帯電話特有の機能を Rails や Rack middleware で利用するためのプラグイン。
|
5
5
|
以下の機能を備える。
|
6
6
|
|
7
7
|
* 携帯電話のキャリア判別
|
8
8
|
* 端末位置情報の取得
|
9
|
+
* GeoKit(http://geokit.rubyforge.org)との連携
|
9
10
|
* 端末製造番号、契約者番号等の取得
|
10
11
|
* IPアドレスの検証(キャリアが公開しているIPアドレス帯域からのアクセスか判定)
|
11
|
-
* セッションIDをフォーム/リンクに付与(Trans SID)
|
12
|
-
* 携帯電話ビューへの自動振分け
|
13
12
|
* ディスプレイ情報(画面サイズ、ブラウザ画面サイズ、カラー・白黒、色数)の取得
|
14
|
-
* GeoKit(http://geokit.rubyforge.org)との連携
|
15
13
|
* 文字コード変換機能/絵文字のキャリア間相互変換
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
開発版:
|
22
|
-
% ./script/plugin install git://github.com/jpmobile/jpmobile.git
|
23
|
-
|
24
|
-
==== gemでインストールする場合
|
25
|
-
|
26
|
-
# gem install jpmobile -v 0.0.8
|
27
|
-
としてgemをインストールした後
|
28
|
-
|
29
|
-
RAILS_ROOT/config/environment.rb の Rails::Initializer.run do |config| 〜 end 内に
|
30
|
-
config.gem "jpmobile"
|
31
|
-
の行を追加する。
|
32
|
-
|
33
|
-
=== Rails 2.3.2
|
34
|
-
==== pluginとしてインストールする場合
|
35
|
-
|
36
|
-
リリース版: (Version 0.0.6)
|
37
|
-
% git clone git://github.com/jpmobile/jpmobile.git vendor/plugins/jpmobile
|
38
|
-
% cd vendor/plugins/jpmobile
|
39
|
-
% git checkout 0.0.6
|
40
|
-
% rm -rf .git
|
15
|
+
また Rails に以下の機能を追加する
|
16
|
+
* ビューへの自動振分け
|
17
|
+
* 位置情報取得などのリンクヘルパーの追加
|
18
|
+
* セッションIDをフォーム/リンクに付与(Trans SID)
|
41
19
|
|
20
|
+
== インストール
|
42
21
|
開発版:
|
43
22
|
% ./script/plugin install git://github.com/jpmobile/jpmobile.git
|
44
23
|
|
45
|
-
|
46
|
-
|
47
|
-
# gem install jpmobile -v 0.0.8
|
48
|
-
としてgemをインストールした後
|
24
|
+
== 使用例
|
49
25
|
|
50
|
-
|
51
|
-
|
52
|
-
の行を追加する。
|
26
|
+
=== 携帯電話の識別
|
27
|
+
環境変数 env['rack.jpmobile'] にキャリアクラスのインスタンスが格納されています。また Rack::Request#mobile としても取得可能です。
|
53
28
|
|
54
|
-
|
55
|
-
リリース版:
|
56
|
-
% git clone git://github.com/jpmobile/jpmobile.git vendor/plugins/jpmobile
|
57
|
-
% cd vendor/plugins/jpmobile
|
58
|
-
% git checkout 0.0.5
|
59
|
-
% rm -rf .git
|
29
|
+
==== キャリアの識別
|
60
30
|
|
61
|
-
|
31
|
+
case request.mobile
|
32
|
+
when Jpmobile::Mobile::Docomo
|
33
|
+
# for DoCoMo
|
34
|
+
when Jpmobile::Mobile::Au
|
35
|
+
# for au
|
36
|
+
when Jpmobile::Mobile::Softbank
|
37
|
+
# for SoftBank
|
38
|
+
when Jpmobile::Mobile::Willcom
|
39
|
+
# for Willcom
|
40
|
+
when Jpmobile::Mobile::Emobile
|
41
|
+
# for EMOBILE
|
42
|
+
else
|
43
|
+
# for PC
|
44
|
+
end
|
62
45
|
|
63
|
-
|
46
|
+
あるいは
|
47
|
+
if request.mobile.is_a?(Jpmobile::Mobile::Docomo)
|
48
|
+
# for DoCoMo
|
49
|
+
end
|
64
50
|
|
65
|
-
====
|
51
|
+
==== ビューの中で一部を切替える例
|
66
52
|
<% if request.mobile? %>
|
67
53
|
携帯電話からのアクセスです。
|
68
54
|
<% else %>
|
69
55
|
携帯電話からのアクセスではありません。
|
70
56
|
<% end %>
|
71
57
|
|
58
|
+
<% if request.smart_phone? %>
|
59
|
+
スマートフォンからのアクセスです。
|
60
|
+
<% else %>
|
61
|
+
スマートフォンからのアクセスではありません。
|
62
|
+
<% end %>
|
63
|
+
|
64
|
+
|
65
|
+
|
72
66
|
==== 別に用意した携帯電話用コントローラへリダイレクトする例
|
73
67
|
class PcController < ApplicationController
|
74
68
|
before_filter :redirect_if_mobile
|
@@ -82,6 +76,10 @@ RAILS_ROOT/config/environment.rb の Rails::Initializer.run do |config| 〜 end
|
|
82
76
|
pa = params.dup
|
83
77
|
pa[:controller] = "/mobile"
|
84
78
|
redirect_to pa
|
79
|
+
elsif request.smart_phone?
|
80
|
+
pa = params.dup
|
81
|
+
pa[:controller] = "/smart_phone"
|
82
|
+
redirect_to pa
|
85
83
|
end
|
86
84
|
end
|
87
85
|
end
|
@@ -90,57 +88,19 @@ RAILS_ROOT/config/environment.rb の Rails::Initializer.run do |config| 〜 end
|
|
90
88
|
mobile_filter
|
91
89
|
end
|
92
90
|
|
93
|
-
|
94
|
-
=== 携帯電話viewの自動振分け
|
95
|
-
DoCoMo携帯電話からアクセスすると、
|
96
|
-
* index_mobile_docomo.html.erb
|
97
|
-
* index_mobile.html.erb
|
98
|
-
* index.html.erb
|
99
|
-
の順でテンプレートを検索し、最初に見付かったテンプレートが利用される。
|
100
|
-
Auの場合は、index_mobile_au.html.erb、Softbankの場合はindex_mobile_softbank.html.erbが最初に検索される。
|
101
|
-
|
102
|
-
BUG: 現状、上記の例では index.html.erb が存在しない場合に振り分けが行われない(ダミーファイルを置くことで回避可能)。
|
103
|
-
|
104
|
-
==== キャリアの識別
|
105
|
-
|
106
|
-
case request.mobile
|
107
|
-
when Jpmobile::Mobile::Docomo
|
108
|
-
# for DoCoMo
|
109
|
-
when Jpmobile::Mobile::Au
|
110
|
-
# for au
|
111
|
-
when Jpmobile::Mobile::Softbank
|
112
|
-
# for SoftBank
|
113
|
-
when Jpmobile::Mobile::Willcom
|
114
|
-
# for Willcom
|
115
|
-
when Jpmobile::Mobile::Emobile
|
116
|
-
# for EMOBILE
|
117
|
-
else
|
118
|
-
# for PC
|
119
|
-
end
|
120
|
-
|
121
|
-
あるいは
|
122
|
-
if request.mobile.is_a?(Jpmobile::Mobile::Docomo)
|
123
|
-
# for DoCoMo
|
124
|
-
end
|
125
|
-
|
126
91
|
=== 位置情報の取得
|
92
|
+
Rack::Request#mobile.position に位置情報が格納されます。
|
127
93
|
|
128
|
-
|
94
|
+
@latitude = request.mobile.position.lat
|
95
|
+
@longuitude = request.mobile.position.lon
|
129
96
|
|
130
|
-
|
131
|
-
<%= get_position_link_to(:action=>:gps) %>
|
97
|
+
==== GeoKit(http://geokit.rubyforge.org)との連携
|
132
98
|
|
133
|
-
|
99
|
+
vandor/plugins/geokit以下にGeoKitがインストールされていると、Jpmobile::PositionにGeoKit::Mappableがincludeされる。したがって、
|
134
100
|
|
135
|
-
|
136
|
-
def gps
|
137
|
-
if request.mobile && pos = request.mobile.position
|
138
|
-
@latitude = pos.lat
|
139
|
-
@longuitude = pos.lon
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
101
|
+
request.mobile.position.distance_to('札幌駅')
|
143
102
|
|
103
|
+
とすることで、端末と「札幌駅」との距離を求めることができる。詳細は http://geokit.rubyforge.org/api/index.html 参照。
|
144
104
|
|
145
105
|
=== 端末情報の取得
|
146
106
|
|
@@ -159,58 +119,42 @@ BUG: 現状、上記の例では index.html.erb が存在しない場合に振
|
|
159
119
|
=== IPの検証
|
160
120
|
キャリアが公開しているIPアドレス帯域からのアクセスか判定する。
|
161
121
|
request.mobile.valid_ip?
|
162
|
-
|
163
|
-
=== セッションIDの付与(Trans SID)
|
164
|
-
==== Cookie非対応携帯だけに付与する
|
165
|
-
class MyController
|
166
|
-
trans_sid
|
167
|
-
end
|
168
|
-
|
169
|
-
==== PCにも付与する
|
170
|
-
class MyController
|
171
|
-
trans_sid :always
|
172
|
-
end
|
173
|
-
|
174
|
-
trans_sid 機能を使う場合には cookie session store を使用することができません。
|
175
|
-
trans_sid を使用する際には、例えば config/initializers/session_store.rb で
|
176
|
-
ActionController::Base.session_store = :active_record_store
|
177
|
-
として active_record_store を使用します。
|
178
|
-
このとき ApplicationController において protect_from_forgery の :secret を指定するか、
|
179
|
-
あるいは protect_from_forgery を解除する必要があるでしょう。
|
180
|
-
|
181
|
-
また、
|
182
|
-
link_to "hoge", "/controller/action/id"
|
183
|
-
のようにリンク先を直接指定するとセッションIDは付加されません。
|
184
|
-
link_to "hoge", :controller => "controller", :action => "action", :id => "id"
|
185
|
-
のように指定する必要があります。
|
186
|
-
|
122
|
+
ただしスマートフォンの場合は必ずfalseとなる。
|
187
123
|
|
188
124
|
=== 端末の画面サイズ
|
189
125
|
request.mobile.display で Jpmobile::Display クラスのインスタンスが返る。
|
190
126
|
画面幅 <%= request.mobile.display.width %>
|
191
127
|
画面高さ <%= request.mobile.display.height %>
|
192
128
|
|
193
|
-
===
|
129
|
+
=== 文字コード変換機能/絵文字のキャリア間相互変換
|
194
130
|
|
195
|
-
|
131
|
+
jpmobileを読み込むとDoCoMo、Au、SoftBankの絵文字を透過的に扱うことができる。
|
196
132
|
|
197
|
-
|
133
|
+
* Rails の場合は vendor/plugins に配置し、下記の設定を追加することで有効になる。
|
198
134
|
|
199
|
-
|
135
|
+
# Rack middleware を追加するメソッド
|
136
|
+
Rails.application.config.jpmobile.mobile_fiter
|
200
137
|
|
201
|
-
|
138
|
+
* Sinatra の場合は下記のように指定する。
|
202
139
|
|
203
|
-
|
204
|
-
|
140
|
+
$LOAD_PATH << './lib/jpmobile/lib'
|
141
|
+
require 'jpmobile'
|
142
|
+
require 'jpmobile/rack'
|
205
143
|
|
206
|
-
|
207
|
-
|
208
|
-
|
144
|
+
use Jpmobile::Rack::MobileCarrier
|
145
|
+
use Jpmobile::Rack::ParamsFilter
|
146
|
+
use Jpmobile::Rack::Filter
|
147
|
+
|
148
|
+
get '/' do
|
149
|
+
erb :index
|
150
|
+
end
|
151
|
+
|
152
|
+
Rails のみ半角・全角の自動変換フィルターが用意されている。用いるには
|
209
153
|
|
210
|
-
また、半角・全角の自動変換を用いる場合は
|
211
154
|
class MyController
|
212
155
|
mobile_filter :hankaku=>true
|
213
156
|
end
|
157
|
+
|
214
158
|
と指定する。
|
215
159
|
|
216
160
|
Jpmobile内では、各キャリアの絵文字はUnicode私的領域上にマッピングされ、管理される。
|
@@ -221,22 +165,72 @@ Jpmobile内では、各キャリアの絵文字はUnicode私的領域上にマ
|
|
221
165
|
絵文字は送出時に内蔵の変換表に基づいて変換され、携帯電話のエンコーディングにあわせて送出される。
|
222
166
|
携帯電話から受信した絵文字は上記マッピングに基づいてUTF-8でparamsに渡される。
|
223
167
|
|
224
|
-
mobile_filterを有効にすると以下の処理が自動で行われる。
|
225
168
|
* DoCoMo、Auとの通信時にはShift_JIS、SoftBankとの通信時にはUTF-8が使用される。
|
226
169
|
* :hankaku=>true指定時は、カタカナは半角カナに変換されて送出される。携帯電話から送られた半角カナは全角カナに変換される。
|
227
170
|
* 絵文字はキャリアにあわせて変換されて送出される。
|
228
171
|
* 携帯電話からの絵文字はUnicode私的領域にマップされ、UTF-8でparamsに格納される。
|
229
172
|
|
173
|
+
=== ビューの自動振分け
|
174
|
+
DoCoMo携帯電話からアクセスすると、
|
175
|
+
* index_mobile_docomo.html.erb
|
176
|
+
* index_mobile.html.erb
|
177
|
+
* index.html.erb
|
178
|
+
の順でテンプレートを検索し、最初に見付かったテンプレートが利用される。
|
179
|
+
Auの場合は、index_mobile_au.html.erb、Softbankの場合はindex_mobile_softbank.html.erbが最初に検索される。
|
180
|
+
|
181
|
+
またiPhoneからアクセスすると、
|
182
|
+
* index_smart_phone_iphone.html.erb
|
183
|
+
* index_smart_phone.html.erb
|
184
|
+
* index.html.erb
|
185
|
+
の順でテンプレートを検索する。
|
186
|
+
Androidの場合はindex_smart_phone_android.html.erb、Windows Phoneの場合はindex_smart_phone_windows_phone.html.erbが最初に検索される。
|
187
|
+
|
188
|
+
携帯専用サイトであれば、index.html.erbがなくとも問題ない。
|
189
|
+
|
190
|
+
=== 位置情報の取得用リンクの生成
|
191
|
+
|
192
|
+
以下のようなコードで、端末に位置情報を要求するリンクを出力する。
|
193
|
+
<%= get_position_link_to(:action=>:gps) %>
|
194
|
+
|
195
|
+
=== セッションIDの付与(Trans SID)
|
196
|
+
==== Cookie非対応携帯だけに付与する
|
197
|
+
class MyController
|
198
|
+
trans_sid
|
199
|
+
end
|
200
|
+
|
201
|
+
==== PCにも付与する
|
202
|
+
class MyController
|
203
|
+
trans_sid :always
|
204
|
+
end
|
205
|
+
|
206
|
+
trans_sid 機能を使う場合には cookie session store を使用することができません。
|
207
|
+
また Rails 3.0 では Cookie が使える場合にはそちらが優先されてしまうため、:always を指定した場合に問題になる場合があります。
|
208
|
+
trans_sid を使用する際には、例えば config/initializers/session_store.rb で
|
209
|
+
|
210
|
+
Rails.application.config.session_store :active_record_store
|
211
|
+
Rails.application.config.session_options = {:cookie_only => false}
|
212
|
+
|
213
|
+
として active_record_store を使用するように設定し、:cookie_only => false として Cookie を優先しないように設定します。
|
214
|
+
このとき ApplicationController において protect_from_forgery の :secret を指定するか、
|
215
|
+
あるいは protect_from_forgery を解除する必要があるでしょう。
|
216
|
+
|
217
|
+
また、
|
218
|
+
link_to "hoge", "/controller/action/id"
|
219
|
+
のようにリンク先を直接指定するとセッションIDは付加されません。
|
220
|
+
link_to "hoge", :controller => "controller", :action => "action", :id => "id"
|
221
|
+
のように指定する必要があります。
|
222
|
+
|
230
223
|
== テストに必要なgemパッケージ
|
231
224
|
テストを実行するためには以下のgemパッケージが必要です。
|
232
225
|
* rails (include rack)
|
233
226
|
* sqlite3-ruby
|
234
|
-
*
|
235
|
-
* hpricot
|
227
|
+
* nokogiri
|
236
228
|
* rspec
|
237
229
|
* rspec-rails
|
238
230
|
* rspec-fixture
|
231
|
+
* rack-test
|
239
232
|
* mocha
|
233
|
+
* geokit
|
240
234
|
|
241
235
|
== リンク
|
242
236
|
|
data/Rakefile
CHANGED
@@ -2,40 +2,35 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'rake/clean'
|
4
4
|
require 'rake/testtask'
|
5
|
-
require 'rake/packagetask'
|
6
|
-
require 'rake/gempackagetask'
|
7
5
|
require 'rake/rdoctask'
|
8
|
-
require 'rake/contrib/rubyforgepublisher'
|
9
6
|
require 'fileutils'
|
10
7
|
include FileUtils
|
11
|
-
require File.join(File.dirname(__FILE__), 'lib', 'jpmobile', 'version')
|
12
8
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
9
|
+
begin
|
10
|
+
require 'jeweler'
|
11
|
+
Jeweler::Tasks.new do |gem|
|
12
|
+
gem.name = "jpmobile"
|
13
|
+
gem.summary = "A Rails plugin for Japanese mobile-phones"
|
14
|
+
gem.description = "A Rails plugin for Japanese mobile-phones"
|
15
|
+
gem.email = "dara@shidara.net"
|
16
|
+
gem.homepage = "http://github.com/jpmobile/jpmobile"
|
17
|
+
gem.authors = ["Yoji Shidara", "Shin-ichiro OGAWA"]
|
18
|
+
|
19
|
+
gem.test_files.exclude 'test/rails/rails_root'
|
20
|
+
|
21
|
+
gem.add_development_dependency('rspec', '>=1.3.0')
|
22
|
+
gem.add_development_dependency('rspec-rails', '>=1.3.2')
|
23
|
+
gem.add_development_dependency('rspec-fixture', '>=0.0.2')
|
24
|
+
gem.add_development_dependency('jeweler', '>=1.4.0')
|
25
|
+
end
|
26
|
+
rescue LoadError
|
27
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
28
|
+
end
|
29
|
+
Jeweler::GemcutterTasks.new
|
34
30
|
|
35
31
|
desc 'Default: run unit tests.'
|
36
32
|
task :default => :test
|
37
33
|
|
38
|
-
|
39
34
|
desc 'Generate documentation for the jpmobile plugin.'
|
40
35
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
41
36
|
rdoc.rdoc_dir = 'doc'
|
@@ -46,58 +41,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
46
41
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
47
42
|
end
|
48
43
|
|
49
|
-
spec =
|
50
|
-
Gem::Specification.new do |s|
|
51
|
-
s.name = NAME
|
52
|
-
s.version = VERS
|
53
|
-
s.platform = Gem::Platform::RUBY
|
54
|
-
s.has_rdoc = true
|
55
|
-
s.extra_rdoc_files = ["README.rdoc", "CHANGELOG"]
|
56
|
-
s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
|
57
|
-
s.summary = DESCRIPTION
|
58
|
-
s.description = DESCRIPTION
|
59
|
-
s.author = AUTHOR
|
60
|
-
s.email = EMAIL
|
61
|
-
s.homepage = HOMEPATH
|
62
|
-
s.executables = BIN_FILES
|
63
|
-
s.rubyforge_project = RUBYFORGE_PROJECT
|
64
|
-
s.bindir = "bin"
|
65
|
-
s.require_path = "lib"
|
66
|
-
|
67
|
-
s.add_runtime_dependency('actionpack', '>=2.3.8')
|
68
|
-
s.add_development_dependency('rspec', '>=1.3.0')
|
69
|
-
s.add_development_dependency('rspec-rails', '>=1.3.2')
|
70
|
-
s.add_development_dependency('rspec-fixture', '>=0.0.2')
|
71
|
-
|
72
|
-
s.files = %w(README.rdoc CHANGELOG Rakefile) +
|
73
|
-
Dir.glob("{bin,doc,test,lib,templates,generator,extras,website,script}/**/*") +
|
74
|
-
Dir.glob("ext/**/*.{h,c,rb}") +
|
75
|
-
Dir.glob("examples/**/*.rb") +
|
76
|
-
Dir.glob("tools/*.rb")
|
77
|
-
|
78
|
-
# s.extensions = FileList["ext/**/extconf.rb"].to_a
|
79
|
-
end
|
80
|
-
|
81
|
-
Rake::GemPackageTask.new(spec) do |p|
|
82
|
-
p.need_tar = true
|
83
|
-
p.gem_spec = spec
|
84
|
-
end
|
85
|
-
|
86
|
-
task :install do
|
87
|
-
name = "#{NAME}-#{VERS}.gem"
|
88
|
-
sh %{rake package}
|
89
|
-
sh %{sudo gem install pkg/#{name}}
|
90
|
-
end
|
91
|
-
|
92
|
-
task :uninstall => [:clean] do
|
93
|
-
sh %{sudo gem uninstall #{NAME}}
|
94
|
-
end
|
95
|
-
|
96
|
-
desc "Publish the API documentation"
|
97
|
-
task :pdoc => [:rdoc] do
|
98
|
-
sh "rsync -azv --delete doc/ dara@rubyforge.org:/var/www/gforge-projects/jpmobile/rdoc/"
|
99
|
-
end
|
100
|
-
|
101
44
|
desc "Update misc tables"
|
102
45
|
task :update do
|
103
46
|
Dir.glob("tools/update_*.rb").each do |path|
|
@@ -105,26 +48,5 @@ task :update do
|
|
105
48
|
end
|
106
49
|
end
|
107
50
|
|
108
|
-
|
109
|
-
|
110
|
-
puts "-"*40
|
111
|
-
puts "rubyforge add_release #{NAME} #{NAME} #{VERS} pkg/#{NAME}-#{VERS}.gem"
|
112
|
-
puts "git tag #{VERS}"
|
113
|
-
end
|
114
|
-
|
115
|
-
task :test => ['test:legacy', 'spec:unit', 'test:rails']
|
116
|
-
load 'tasks/jpmobile_tasks.rake'
|
117
|
-
|
118
|
-
begin
|
119
|
-
require 'jeweler'
|
120
|
-
Jeweler::Tasks.new do |gemspec|
|
121
|
-
gemspec.name = "jpmobile"
|
122
|
-
gemspec.summary = %q{A Rails plugin for Japanese mobile-phones}
|
123
|
-
gemspec.description = %q{A Rails plugin for Japanese mobile-phones}
|
124
|
-
gemspec.email = %q{dara@shidara.net}
|
125
|
-
gemspec.homepage = %q{http://github.com/jpmobile/jpmobile}
|
126
|
-
gemspec.authors = ["Yoji Shidara", "Shin-ichiro OGAWA"]
|
127
|
-
end
|
128
|
-
rescue LoadError
|
129
|
-
puts "Jeweler not available. Install it with: gem install jeweler"
|
130
|
-
end
|
51
|
+
task :test => ['test:legacy', 'spec:unit', 'spec:rack', 'test:rails']
|
52
|
+
load 'lib/tasks/jpmobile_tasks.rake'
|