jpmobile 0.0.8 → 0.1.0.pre

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.
Files changed (132) hide show
  1. data/.gitignore +0 -3
  2. data/{spec/spec.opts → .rspec} +1 -2
  3. data/README.rdoc +122 -128
  4. data/Rakefile +23 -101
  5. data/VERSION.yml +4 -3
  6. data/jpmobile.gemspec +130 -182
  7. data/lib/jpmobile.rb +37 -24
  8. data/lib/jpmobile/docomo_guid.rb +2 -1
  9. data/lib/jpmobile/email.rb +3 -4
  10. data/lib/jpmobile/emoticon.rb +2 -6
  11. data/lib/jpmobile/encoding.rb +29 -0
  12. data/lib/jpmobile/filter.rb +42 -134
  13. data/lib/jpmobile/helpers.rb +5 -18
  14. data/lib/jpmobile/hook_action_controller.rb +24 -16
  15. data/lib/jpmobile/hook_action_view.rb +28 -89
  16. data/lib/jpmobile/mobile/abstract_mobile.rb +21 -4
  17. data/lib/jpmobile/mobile/android.rb +10 -0
  18. data/lib/jpmobile/mobile/au.rb +28 -3
  19. data/lib/jpmobile/mobile/ddipocket.rb +12 -0
  20. data/lib/jpmobile/mobile/display.rb +29 -26
  21. data/lib/jpmobile/mobile/docomo.rb +38 -12
  22. data/lib/jpmobile/mobile/iphone.rb +26 -0
  23. data/lib/jpmobile/mobile/smart_phone.rb +21 -0
  24. data/lib/jpmobile/mobile/softbank.rb +16 -41
  25. data/lib/jpmobile/mobile/vodafone.rb +17 -0
  26. data/lib/jpmobile/mobile/willcom.rb +1 -10
  27. data/lib/jpmobile/mobile/windows_phone.rb +10 -0
  28. data/lib/jpmobile/position.rb +4 -3
  29. data/lib/jpmobile/rack.rb +43 -0
  30. data/lib/jpmobile/rack/filter.rb +51 -0
  31. data/lib/jpmobile/rack/mobile_carrier.rb +33 -0
  32. data/lib/jpmobile/rack/params_filter.rb +47 -0
  33. data/lib/jpmobile/rails.rb +22 -0
  34. data/lib/jpmobile/request_with_mobile.rb +8 -12
  35. data/lib/jpmobile/trans_sid.rb +44 -26
  36. data/lib/jpmobile/util.rb +68 -0
  37. data/{tasks → lib/tasks}/jpmobile_tasks.rake +32 -13
  38. data/spec/rack/jpmobile/android_spec.rb +20 -0
  39. data/spec/rack/jpmobile/au_spec.rb +206 -0
  40. data/spec/rack/jpmobile/docomo_spec.rb +237 -0
  41. data/spec/rack/jpmobile/emoticon_spec.rb +215 -0
  42. data/spec/rack/jpmobile/filter_spec.rb +181 -0
  43. data/spec/rack/jpmobile/iphone_spec.rb +32 -0
  44. data/spec/rack/jpmobile/mobile_by_ua_spec.rb +39 -0
  45. data/spec/rack/jpmobile/params_filter_spec.rb +193 -0
  46. data/spec/rack/jpmobile/softbank_spec.rb +123 -0
  47. data/spec/rack/jpmobile/willcom_spec.rb +67 -0
  48. data/spec/rack/jpmobile/windows_phone.rb +20 -0
  49. data/spec/rack_helper.rb +86 -0
  50. data/spec/spec_helper.rb +3 -2
  51. data/spec/unit/detect_by_email_spec.rb +21 -27
  52. data/spec/unit/is_carrier_spec.rb +56 -84
  53. data/spec/unit/spec_helper.rb +1 -2
  54. data/spec/unit/util_spec.rb +2 -2
  55. data/spec/unit/valid_ip_spec.rb +43 -52
  56. data/test/legacy/autoload_test.rb +1 -3
  57. data/test/legacy/emoticon_test.rb +5 -6
  58. data/test/legacy/helper.rb +0 -71
  59. data/test/rails/overrides/.rspec +5 -0
  60. data/test/rails/overrides/Gemfile +32 -0
  61. data/test/rails/overrides/app/controllers/docomo_guid_always_controller.rb +3 -0
  62. data/test/rails/overrides/app/controllers/docomo_guid_base_controller.rb +5 -0
  63. data/test/rails/overrides/app/controllers/docomo_guid_docomo_controller.rb +3 -0
  64. data/test/rails/overrides/app/controllers/filter_controller.rb +0 -34
  65. data/test/rails/overrides/app/controllers/filter_controller_base.rb +19 -0
  66. data/test/rails/overrides/app/controllers/hankaku_filter_controller.rb +3 -0
  67. data/test/rails/overrides/app/controllers/links_controller.rb +28 -0
  68. data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
  69. data/test/rails/overrides/app/controllers/template_path_controller.rb +3 -0
  70. data/test/rails/overrides/app/controllers/trans_sid_always_and_session_off_controller.rb +4 -0
  71. data/test/rails/overrides/app/controllers/trans_sid_always_controller.rb +3 -0
  72. data/test/rails/overrides/app/controllers/trans_sid_base_controller.rb +18 -0
  73. data/test/rails/overrides/app/controllers/trans_sid_mobile_controller.rb +3 -0
  74. data/test/rails/overrides/app/controllers/trans_sid_none_controller.rb +3 -0
  75. data/test/rails/overrides/app/views/links/au_gps.html.erb +1 -0
  76. data/test/rails/overrides/app/views/links/au_location.html.erb +1 -0
  77. data/test/rails/overrides/app/views/links/docomo_foma_gps.html.erb +1 -0
  78. data/test/rails/overrides/app/views/links/docomo_openiarea.html.erb +1 -0
  79. data/test/rails/overrides/app/views/links/docomo_utn.html.erb +1 -0
  80. data/test/rails/overrides/app/views/links/link.html.erb +1 -0
  81. data/test/rails/overrides/app/views/links/show_all.html.erb +1 -0
  82. data/test/rails/overrides/app/views/links/softbank_location.html.erb +1 -0
  83. data/test/rails/overrides/app/views/links/willcom_location.html.erb +1 -0
  84. data/test/rails/overrides/app/views/template_path/_partial_smart_phone.html.erb +1 -0
  85. data/test/rails/overrides/app/views/template_path/_partial_smart_phone_iphone.html.erb +1 -0
  86. data/test/rails/overrides/app/views/template_path/index_smart_phone.html.erb +1 -0
  87. data/test/rails/overrides/app/views/template_path/index_smart_phone_iphone.html.erb +1 -0
  88. data/test/rails/overrides/app/views/template_path/show_mobile.html.erb +1 -0
  89. data/test/rails/overrides/app/views/template_path/show_mobile_docomo.html.erb +1 -0
  90. data/test/rails/overrides/autotest/discover.rb +2 -0
  91. data/test/rails/overrides/config/initializers/jpmobile_generator.rb +1 -0
  92. data/test/rails/overrides/config/routes.rb +58 -0
  93. data/test/rails/overrides/db/migrate/001_add_sessions_table.rb +16 -0
  94. data/test/rails/overrides/spec/helpers/helpers_spec.rb +2 -2
  95. data/test/rails/overrides/spec/{controllers → requests}/docomo_guid_spec.rb +37 -14
  96. data/test/rails/overrides/spec/{controllers → requests}/docomo_spec.rb +11 -8
  97. data/test/rails/overrides/spec/{controllers → requests}/emobile_spec.rb +24 -8
  98. data/test/rails/overrides/spec/requests/filter_spec.rb +171 -0
  99. data/test/rails/overrides/spec/requests/helpers_spec.rb +187 -0
  100. data/test/rails/overrides/spec/requests/pc_spec.rb +22 -0
  101. data/test/rails/overrides/spec/requests/softbank_emulator_spec.rb +21 -0
  102. data/test/rails/overrides/spec/requests/template_path_spec.rb +234 -0
  103. data/test/rails/overrides/spec/requests/trans_sid_spec.rb +142 -0
  104. data/test/rails/overrides/spec/spec_helper.rb +17 -48
  105. data/test/sinatra/guestbook.rb +40 -0
  106. data/test/sinatra/test/filter_test.rb +39 -0
  107. metadata +185 -312
  108. data/lib/jpmobile/hook_request.rb +0 -5
  109. data/lib/jpmobile/rack/auth.rb +0 -55
  110. data/lib/jpmobile/rack/combined_logger.rb +0 -54
  111. data/lib/jpmobile/rack/request.rb +0 -7
  112. data/lib/jpmobile/rack/trans_sid.rb +0 -14
  113. data/lib/jpmobile/version.rb +0 -9
  114. data/spec/unit/detect_by_ua_spec.rb +0 -40
  115. data/test/legacy/au_test.rb +0 -173
  116. data/test/legacy/docomo_test.rb +0 -187
  117. data/test/legacy/emoticon_functional_test.rb +0 -195
  118. data/test/legacy/filter_test.rb +0 -34
  119. data/test/legacy/helpers_test.rb +0 -217
  120. data/test/legacy/softbank_test.rb +0 -183
  121. data/test/legacy/willcom_test.rb +0 -56
  122. data/test/rails/2.3.2/spec/controllers/trans_sid_spec.rb +0 -99
  123. data/test/rails/overrides/app/controllers/docomo_guid_controller.rb +0 -13
  124. data/test/rails/overrides/app/controllers/trans_sid_controller.rb +0 -28
  125. data/test/rails/overrides/lib/tasks/rspec.rake +0 -165
  126. data/test/rails/overrides/spec/controllers/filter_spec.rb +0 -159
  127. data/test/rails/overrides/spec/controllers/pc_spec.rb +0 -13
  128. data/test/rails/overrides/spec/controllers/softbank_emulator_spec.rb +0 -42
  129. data/test/rails/overrides/spec/controllers/template_path_spec.rb +0 -117
  130. data/test/rails/overrides/spec/controllers/trans_sid_spec.rb +0 -117
  131. data/test/rails/overrides/spec/rspec.rake +0 -165
  132. data/test/rails/overrides/spec/spec.opts +0 -4
data/.gitignore CHANGED
@@ -1,6 +1,3 @@
1
1
  doc
2
2
  tmp
3
3
  pkg
4
- .bundle
5
- Gemfile
6
- Gemfile.lock
@@ -1,6 +1,5 @@
1
1
  --colour
2
2
  --format
3
3
  progress
4
- --loadby
5
4
  mtime
6
- --reverse
5
+ -b
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
- Rails の Version に応じて選択してください。
19
- === Rails 2.3.3 〜 2.3.8
20
- ==== pluginとしてインストールする場合
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
- ==== gemでインストールする場合
46
-
47
- # gem install jpmobile -v 0.0.8
48
- としてgemをインストールした後
24
+ == 使用例
49
25
 
50
- RAILS_ROOT/config/environment.rb の Rails::Initializer.run do |config| 〜 end 内に
51
- config.gem "jpmobile"
52
- の行を追加する。
26
+ === 携帯電話の識別
27
+ 環境変数 env['rack.jpmobile'] にキャリアクラスのインスタンスが格納されています。また Rack::Request#mobile としても取得可能です。
53
28
 
54
- === Rails 2.2.x 以前
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
- ==== Viewの中で一部を切替える例
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
- class MobileController < ApplicationController
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
- === GeoKit(http://geokit.rubyforge.org)との連携
129
+ === 文字コード変換機能/絵文字のキャリア間相互変換
194
130
 
195
- vandor/plugins/geokit以下にGeoKitがインストールされていると、Jpmobile::PositionにGeoKit::Mappableがincludeされる。したがって、
131
+ jpmobileを読み込むとDoCoMo、Au、SoftBankの絵文字を透過的に扱うことができる。
196
132
 
197
- request.mobile.position.distance_to('札幌駅')
133
+ * Rails の場合は vendor/plugins に配置し、下記の設定を追加することで有効になる。
198
134
 
199
- とすることで、端末と「札幌駅」との距離を求めることができる。詳細は http://geokit.rubyforge.org/api/index.html 参照。
135
+ # Rack middleware を追加するメソッド
136
+ Rails.application.config.jpmobile.mobile_fiter
200
137
 
201
- === 文字コード変換機能/絵文字のキャリア間相互変換
138
+ * Sinatra の場合は下記のように指定する。
202
139
 
203
- JpmobileではControllerにmobile_filterを指定することで
204
- DoCoMo、Au、SoftBankの絵文字を透過的に扱うことができる。
140
+ $LOAD_PATH << './lib/jpmobile/lib'
141
+ require 'jpmobile'
142
+ require 'jpmobile/rack'
205
143
 
206
- class MyController
207
- mobile_filter
208
- end
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
- * test-unit (= 1.2.3)
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
- AUTHOR = "dara"
15
- EMAIL = "dara@shidara.net"
16
- DESCRIPTION = "A Rails plugin for Japanese mobile-phones"
17
- RUBYFORGE_PROJECT = "jpmobile"
18
- HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
19
- BIN_FILES = %w( )
20
-
21
- NAME = "jpmobile"
22
- REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
23
- VERS = ENV['VERSION'] || (Jpmobile::VERSION::STRING + (REV ? ".#{REV}" : ""))
24
- CLEAN.include ['**/.*.sw?', '*.gem', '.config']
25
- RDOC_OPTS = ['--quiet', '--title', "jpmobile documentation",
26
- "--opname", "index.html",
27
- "--line-numbers",
28
- "--main", "README.rdoc",
29
- "--inline-source"]
30
-
31
- desc "Packages up jpmobile gem."
32
- task :default => [:test, :spec]
33
- task :package => [:clean]
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
- desc "Release helper"
109
- task :rel => [:gem] do
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'