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.
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'