jpmobile / jpmobile Goto Github PK
View Code? Open in Web Editor NEWA Rails plugin for Japanese mobile-phones
Home Page: https://jpmobile-rails.org/
License: MIT License
A Rails plugin for Japanese mobile-phones
Home Page: https://jpmobile-rails.org/
License: MIT License
旧バージョンでは、mobile_filterをコントローラーごとに有効・無効にできたと思いますが、最新バージョンではそのような設定方法はありませんか?config/initializers 以下でアプリケーション全体に対して有効にするしか方法が無いのでしょうか?
アプリケーション全体に対して有効にすると、PC用画面がある場合で、production環境ではない場合の画像の表示(production環境ではassetsをプリコンパイルしているためエラーとならない)や、CSVの出力などでsjisにレスポンスを変換した場合に、UTF8じゃないので変換できないというエラーになってしまいます。
著書の方法でPC用画面にsix apartの絵文字を表示しようと思ったのですが、本番環境以外でエラーとなってしまうことから上記現象に気づきました。
<%=render :partial=>'shared/test'%>
上記の記法だと問題なくapp/views/shared/_test_mobile.html.erbが使用されます。
<%=render :partial=>'/shared/test'%>
上記の記法だと(パスの指定の頭に"/"が追加)app/views/shared/_test.html.erbが使用されてしまいます。
resolver.rbの16行目に出力を仕掛けたところ以下な出力になりました。
<%=render :partial=>'/shared/test'%>の場合
"/Users/hoge/test/jpmobile_test/app/views/welcome/index{{},}{.{en},}{.{html,text,js,css,ics,csv,png,jpeg,gif,bmp,tiff,mpeg,xml,rss,atom,yaml,multipart_form,url_encoded_form,json,pdf,zip},}{.{erb,builder,coffee},}"
"/Users/hoge/test/jpmobile_test/app/views/welcome/index{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
"/Users/hoge/test/jpmobile_test/app/views/layouts/welcome{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
"/Users/hoge/test/jpmobile_test/app/views/layouts/application{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
"/shared/test{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
<%=render :partial=>'shared/test'%>の場合
"/Users/hoge/test/jpmobile_test/app/views/welcome/index{{},}{.{en},}{.{html,text,js,css,ics,csv,png,jpeg,gif,bmp,tiff,mpeg,xml,rss,atom,yaml,multipart_form,url_encoded_form,json,pdf,zip},}{.{erb,builder,coffee},}"
"/Users/hoge/test/jpmobile_test/app/views/welcome/index{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
"/Users/hoge/test/jpmobile_test/app/views/layouts/welcome{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
"/Users/hoge/test/jpmobile_test/app/views/layouts/application{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
"/Users/hoge/test/jpmobile_test/app/views/shared/test{{mobile_docomo,mobile},}{.{en},}{.{html},}{.{erb,builder,coffee},}"
以前は、ともに問題なく_test_mobile.html.erbが使用されたと記憶してますがちょっと怪しいです。
rails的にはどちらの記法でも動作するので修正していただけるとうれしいです。
再現環境はRails3.2になります。
上記の組み合わせで「bundle exec rake -T」実行時にエラーが発生します。
新規プロジェクトでまだ設定が完全に終わっていませんが Gemfile から jpmobile か meta_search のどちらかを外すと「bundle exec rake -T」が正常に走ります。
$ bundle exec rake -T --trace
rake aborted!
uninitialized constant ActionDispatch::Session::Compatibility
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/jpmobile-3.0.0/lib/jpmobile/trans_sid.rb:39:in `<module:SessionID>'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/jpmobile-3.0.0/lib/jpmobile/trans_sid.rb:36:in `<module:Jpmobile>'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/jpmobile-3.0.0/lib/jpmobile/trans_sid.rb:5:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/jpmobile-3.0.0/lib/jpmobile/rails.rb:8:in `block in <top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/activesupport-3.2.0/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/activesupport-3.2.0/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/activesupport-3.2.0/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/jpmobile-3.0.0/lib/jpmobile/rails.rb:2:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/jpmobile-3.0.0/lib/jpmobile.rb:58:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
/usr/local/rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/usr/local/rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
/usr/local/rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
/usr/local/rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
/usr/local/rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
/usr/local/rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
/home/hk/src/sr/config/application.rb:14:in `<top (required)>'
/home/hk/src/sr/Rakefile:5:in `require'
/home/hk/src/sr/Rakefile:5:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `block in run'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/bin/rake:19:in `load'
/usr/local/rvm/gems/ruby-1.9.2-p290@sr/bin/rake:19:in `<main>'
(上記のログのパスやgemset名は編集しています)
https://github.com/yuuna/jpmobile-test
こちらにサンプルコードをあげております。
deviseでユーザーのセッション管理をしつつcookie非対応端末のためにtrans_sidをしたところ
1.ログイン必要なページにアクセス
2.ログイン画面がでる
3.ログイン完了後にトップに戻る
がループしてしまいます。trans_sidがsessionのhookに失敗してるように見受けられます。
トップからのリンク先のsession_idが毎回かわるのでこのへんが原因かなとおもいます。
よろしくお願いします。
ParamsOverCookieはActionControllerをpatchをします。
でも、このmoduleがなくても、session id parameterが使えますから、理由がわかりません。
Failure/Error: expect {
expected no Exception, got #<Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 25> with backtrace:
# ./vendor/bundle/ruby/2.1.0/gems/mail-2.6.3/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
# ./vendor/bundle/ruby/2.1.0/gems/mail-2.6.3/lib/mail/message.rb:2141:in `do_delivery'
# ./vendor/bundle/ruby/2.1.0/gems/mail-2.6.3/lib/mail/message.rb:238:in `deliver'
# ./spec/unit/mail_spec.rb:347:in `block (4 levels) in <top (required)>'
# ./spec/unit/mail_spec.rb:346:in `block (3 levels) in <top (required)>'
実際の送信処理は、ActionMailerが使われているためテストの本質ではない。したがって、このメソッドのモックを作成することで解決
現状ではSoftBank絵文字に変換しているので、auで出たらどうするかを考える。
1b 28 42 1b 24 42
のような日本語終了->開始のエスケープシーケンスの並びがあると、前後の絵文字の解釈に失敗する可能性がある。
Nokogiriでのエンコーディングの問題です。対処方法は分かっているので、あとで修正します。
Jpmobile::Mailer::Base によるメール送信の際、@docomo.ne.jp や @softbank.ne.jp では絵文字がきちんと表示されるのですが、iPhone専用メールアドレスの @i.softbank.jp では絵文字が変換ができなかった際に表示されるハシゴアイコンになってしまいます。
Softbankクラスのメールアドレスの正規表現に @i.softbank.jp を追加するだけで良いと思うのですが、他に変更が必要なところはありますでしょうか?
現在は送信しか実装する要件はないのですが、将来的に受信側も実装する予定があるので、そちらも対応が必要なのか知りたく。。
ご教示頂ければ幸いです。
前はRails3.1でも動作していたと思うのですが、最新版では以下のようなエラーが発生してインストール出来ません。
# Gemfile
gem "jpmobile", "~> 2.0.0.pre.2"
$ bundle install
Fetching source index for http://rubygems.org/
/Users/y-hirasawa/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:289:in `load': uninitialized constant Syck::Syck (NameError)
Rails3.1、Devise1.4.7、jpmobile2.0.1の組み合わせで、ログアウトすると、以下のようなエラーが出力されてしまう。
undefined method `generate_sid' for Jpmobile::SessionID:Module
@@internal
と@@external
を変更できるような仕組みを導入する
の組み合わせで起きました。
軽く調べてみたところ、rails 4.1.2からfind_template_paths
が実装されています。
なので、Railsは4.1.2以上としてはいかがでしょうか?
現状私は以下の対処をしました
util.rb#utf8_to_sjis内のutf8_str.respond_to?(:encode)の所をぶった切ってNKFにゆだねる
次バージョンにてなんらかの対応をしていただけるとありがたいです
Mobileクラスで
convert_emoticons?
を作ってそれで変換するか判定する。
jpmobile3.05+ruby1.9.3-p194+rails3.2.8において、Jpmobile::Mailer::Baseを継承したサブクラスを使用してメール送信を行なっています。
テンプレートを
app/views/xxx_mailer/welcome.text.erb
app/views/xxx_mailer/welcome_mobile.text.erb
としている場合において、toアドレスが[email protected]であっても、[email protected](携帯メールアドレス)であってもwelcome_mobile.text.erbが使用されてしまいます。
なにか確認すべき点がございましたらご教示いただければ幸いです
Add this to your Gemfile:
gem 'jpmobile'
gem 'jpmobile-ipaddresses'
gem 'jpmobile-terminfo'
iOS6からHTMLファイルアップロードができるようになり、Rails3.2.6+jpmobile3.0.4上でトライしましたが、次のエラーが発生しましたのでご報告します。Stacktraceを見る限りでは、自分が書いたアプリケーションコードまで到達していない点と、同じコードをAndroidで実行すると問題なく動作しているので、iOSでの問題と思います。
ArgumentError (invalid byte sequence in UTF-8):
jpmobile (3.0.4) lib/jpmobile/emoticon.rb:66:in gsub' jpmobile (3.0.4) lib/jpmobile/emoticon.rb:66:in
external_to_unicodecr_softbank'
jpmobile (3.0.4) lib/jpmobile/mobile/iphone.rb:23:in to_internal' jpmobile (3.0.4) lib/jpmobile/rack/params_filter.rb:30:in
to_internal'
jpmobile (3.0.4) lib/jpmobile/rack/params_filter.rb:38:in block in parse_query' jpmobile (3.0.4) lib/jpmobile/rack/params_filter.rb:36:in
each'
jpmobile (3.0.4) lib/jpmobile/rack/params_filter.rb:36:in parse_query' jpmobile (3.0.4) lib/jpmobile/rack/params_filter.rb:16:in
call'
jpmobile (3.0.4) lib/jpmobile/rack/mobile_carrier.rb:13:in call' actionpack (3.2.6) lib/action_dispatch/middleware/flash.rb:242:in
call'
rack (1.4.1) lib/rack/session/abstract/id.rb:205:in context' rack (1.4.1) lib/rack/session/abstract/id.rb:200:in
call'
actionpack (3.2.6) lib/action_dispatch/middleware/cookies.rb:338:in call' activerecord (3.2.6) lib/active_record/query_cache.rb:64:in
call'
activerecord (3.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in call' actionpack (3.2.6) lib/action_dispatch/middleware/callbacks.rb:28:in
block in call'
activesupport (3.2.6) lib/active_support/callbacks.rb:405:in _run__31726921__call__275934101__callbacks'
activesupport (3.2.6) lib/active_support/callbacks.rb:405:in __run_callback' activesupport (3.2.6) lib/active_support/callbacks.rb:385:in
_run_call_callbacks'
activesupport (3.2.6) lib/active_support/callbacks.rb:81:in run_callbacks' actionpack (3.2.6) lib/action_dispatch/middleware/callbacks.rb:27:in
call'
actionpack (3.2.6) lib/action_dispatch/middleware/reloader.rb:65:in call' actionpack (3.2.6) lib/action_dispatch/middleware/remote_ip.rb:31:in
call'
actionpack (3.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:16:in call' actionpack (3.2.6) lib/action_dispatch/middleware/show_exceptions.rb:56:in
call'
railties (3.2.6) lib/rails/rack/logger.rb:26:in call_app' railties (3.2.6) lib/rails/rack/logger.rb:16:in
call'
actionpack (3.2.6) lib/action_dispatch/middleware/request_id.rb:22:in call' rack (1.4.1) lib/rack/methodoverride.rb:21:in
call'
rack (1.4.1) lib/rack/runtime.rb:17:in call' activesupport (3.2.6) lib/active_support/cache/strategy/local_cache.rb:72:in
call'
rack (1.4.1) lib/rack/lock.rb:15:in call' actionpack (3.2.6) lib/action_dispatch/middleware/static.rb:62:in
call'
railties (3.2.6) lib/rails/engine.rb:479:in call' railties (3.2.6) lib/rails/application.rb:220:in
call'
rack (1.4.1) lib/rack/content_length.rb:14:in call' railties (3.2.6) lib/rails/rack/log_tailer.rb:17:in
call'
rack (1.4.1) lib/rack/handler/webrick.rb:59:in service' C:/tools/ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:138:in
service'
C:/tools/ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:94:in run' C:/tools/ruby193/lib/ruby/1.9.1/webrick/server.rb:191:in
block in start_threa
d'
Rendered C:/tools/ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
Rendered C:/tools/ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
Rendered C:/tools/ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (28
.0ms)
Jpmobile::Mailer::Baseでのメールの送信で以下の例外が発生しました。
ActionMailerを使用している時はメール送信できていました。
チェックするポイント等ありましたら教えて下さい。
よろしくお願いします。
■例外エラー
Encoding::CompatibilityError in MailerController#sendmail
incompatible encoding regexp match (US-ASCII regexp with ISO-2022-JP string)
■使用バージョン
rails3.2.0 + jpmobile3.0.1 + ruby1.9.2p290
■Mailerのソース
#class SampleMailer < ActionMailer::Base
class SampleMailer < Jpmobile::Mailer::Base
default from: "[email protected]"
def greeting
@greeting = "Hi"
mail to: "[email protected]"
end
end
■Framework Trace
activesupport (3.2.1) lib/active_support/core_ext/object/blank.rb:105:in =~' activesupport (3.2.1) lib/active_support/core_ext/object/blank.rb:105:in
!~'
activesupport (3.2.1) lib/active_support/core_ext/object/blank.rb:105:in blank?' mail (2.4.1) lib/mail/network/delivery_methods/smtp.rb:108:in
deliver!'
mail (2.4.1) lib/mail/message.rb:2033:in do_delivery' mail (2.4.1) lib/mail/message.rb:229:in
block in deliver'
actionmailer (3.2.1) lib/action_mailer/base.rb:414:in block in deliver_mail' activesupport (3.2.1) lib/active_support/notifications.rb:123:in
block in instrument'
activesupport (3.2.1) lib/active_support/notifications/instrumenter.rb:20:in instrument' activesupport (3.2.1) lib/active_support/notifications.rb:123:in
instrument'
actionmailer (3.2.1) lib/action_mailer/base.rb:412:in deliver_mail' mail (2.4.1) lib/mail/message.rb:229:in
deliver'
actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (3.2.1) lib/abstract_controller/base.rb:167:in
process_action'
・
・
・
When using jpmobile as gem:
{...}/jpmobile/lib/jpmobile/hook_action_controller.rb:18: uninitialized constant ActionController::Request (NameError)
ActionController::Request is deprecated - now it's ActionDispatch::Request (from actionpack-3.0.4/lib/action_controller/deprecated.rb).
So why is it marked as working with rails 3 if it does not?
タイトルの件、ご質問させてください。
現在
hankaku_filter input: true
を指定すると、submit ボタンの value 属性に半角カナが使われいても全角に変換されます。
ソースコード上だとこの部分になりますが、これは e682bce にて振る舞いが変わっているように見えます。このコミット以前は全角から半角へ、それ以降は半角から全角へ変換されるようになっています。
この変更は意図したものでしょうか?
submit ボタンの value はユーザも端末で目にする部分であり、input: true
指定時も半角カナを維持するか、もしくはそれを実現するオプションがあるとありがたいと思っています。
gem.add_runtime_dependency 'actionmailer' # jpmobile.gemspec
全角カナの半角自動変換は以下のコードでできたのですが、全角の英数字や記号を半角に自動変換する機能はあるでしょうか?
class ApplicationController < ActionController::Base
include Jpmobile::ViewSelector
hankaku_filter :input => true
...
end
Jpmobile::Mailer::Base によるメール受信を試みているのですが、au からのメールでは例外エラーが発生してしまいます。ちなみにdocomo,softbankでは例外エラーは発生していません。
題名に特定の文字が入っていると発生するようです。(例: ※本文はそのままで)
ご教示頂ければ幸いです。
Encoding::InvalidByteSequenceError ("\xE2" on ISO-2022-JP):
app/controllers/receipt/tasks/qr_task_controller.rb:9:in `execute'
vendor/bundle/ruby/1.9.1/gems/jpmobile-3.0.2/lib/jpmobile/util.rb:139:in `encode'
vendor/bundle/ruby/1.9.1/gems/jpmobile-3.0.2/lib/jpmobile/util.rb:139:in `jis_to_utf8'
vendor/bundle/ruby/1.9.1/gems/jpmobile-3.0.2/lib/jpmobile/mobile/au.rb:116:in `to_mail_internal'
vendor/bundle/ruby/1.9.1/gems/jpmobile-3.0.2/lib/jpmobile/mail.rb:263:in `convert_encoding_jpmobile'
vendor/bundle/ruby/1.9.1/gems/jpmobile-3.0.2/lib/jpmobile/mail.rb:97:in `parse_message_with_jpmobile'
vendor/bundle/ruby/1.9.1/gems/jpmobile-3.0.2/lib/jpmobile/mail.rb:108:in `init_with_string'
vendor/bundle/ruby/1.9.1/gems/mail-2.4.4/lib/mail/message.rb:125:in `initialize'
vendor/bundle/ruby/1.9.1/gems/mail-2.4.4/lib/mail/mail.rb:50:in `new'
rails (3.2.1) + jpmobile (3.0.2) + ruby (1.9.3-p125)
すみません、質問になります。
#70 の変更をしていて疑問に思ったのですが、japanese_mail_address_regexpはどのような意図で現状のような形になっているのでしょうか?
「.jpドメインから送られていたら日本語メールで、それ以外は違うだろう」というのはずいぶん乱暴な想定に思えるのですが。gmailとかだってありますし…。
いつもありがたく使用させていただいております。ありがとうございます。
Jpmobile.config.smart_phone_emoticon_compatibility = true
にしておくと、iOS6 で可能になった、フォームからのファイルアップロードに失敗します。
# アンドロイド端末でも発生しているみたいです。
-- View --
<%= form_tag({:action => :create}, {:multipart => true}) do -%>
<%= file_field_tag "file" -%>
<%= submit_tag -%>
<% end -%>
-- Action --
def create
upfile = params[:file]
render :text => upfile.original_filename
end
-- Log --
EOFError (bad content body):
rack (1.4.5) lib/rack/multipart/parser.rb:82:in fast_forward_to_first_boundary' rack (1.4.5) lib/rack/multipart/parser.rb:72:in
loop'
rack (1.4.5) lib/rack/multipart/parser.rb:72:in fast_forward_to_first_boundary' rack (1.4.5) lib/rack/multipart/parser.rb:15:in
parse'
rack (1.4.5) lib/rack/multipart.rb:25:in parse_multipart' rack (1.4.5) lib/rack/request.rb:336:in
parse_multipart'
rack (1.4.5) lib/rack/request.rb:201:in POST' actionpack (3.2.12) lib/action_dispatch/http/request.rb:231:in
request_parameters'
actionpack (3.2.12) lib/action_dispatch/http/parameters.rb:10:in parameters' actionpack (3.2.12) lib/action_dispatch/http/filter_parameters.rb:33:in
filtered_parameters'
actionpack (3.2.12) lib/action_controller/metal/instrumentation.rb:21:in process_action' actionpack (3.2.12) lib/action_controller/metal/params_wrapper.rb:207:in
process_action'
activerecord (3.2.12) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (3.2.12) lib/abstract_controller/base.rb:121:in
process'
actionpack (3.2.12) lib/abstract_controller/rendering.rb:45:in process' actionpack (3.2.12) lib/action_controller/metal.rb:203:in
dispatch'
actionpack (3.2.12) lib/action_controller/metal/rack_delegation.rb:14:in dispatch' actionpack (3.2.12) lib/action_controller/metal.rb:246:in
action'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:73:in call' actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:73:in
dispatch'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:36:in call' journey (1.0.4) lib/journey/router.rb:68:in
call'
journey (1.0.4) lib/journey/router.rb:56:in each' journey (1.0.4) lib/journey/router.rb:56:in
call'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:601:in call' /usr/local/rvm/gems/ree-1.8.7-2012.02/bundler/gems/rails-dev-boost-d21b29786322/lib/rails_development_boost/async.rb:14:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/best_standards_support.rb:17:in call' rack (1.4.5) lib/rack/etag.rb:23:in
call'
rack (1.4.5) lib/rack/conditionalget.rb:35:in call' actionpack (3.2.12) lib/action_dispatch/middleware/head.rb:14:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/params_parser.rb:21:in call' jpmobile (3.0.7) lib/jpmobile/rack/filter.rb:16:in
call'
jpmobile (3.0.7) lib/jpmobile/rack/params_filter.rb:23:in call' jpmobile (3.0.7) lib/jpmobile/rack/mobile_carrier.rb:13:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/flash.rb:242:in call' rack (1.4.5) lib/rack/session/abstract/id.rb:210:in
context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in call' actionpack (3.2.12) lib/action_dispatch/middleware/cookies.rb:341:in
call'
activerecord (3.2.12) lib/active_record/query_cache.rb:64:in call' activerecord (3.2.12) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/callbacks.rb:28:in call' activesupport (3.2.12) lib/active_support/callbacks.rb:405:in
_run__749190767__call__4__callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:405:in send' activesupport (3.2.12) lib/active_support/callbacks.rb:405:in
__run_callback'
activesupport (3.2.12) lib/active_support/callbacks.rb:385:in _run_call_callbacks' activesupport (3.2.12) lib/active_support/callbacks.rb:81:in
send'
activesupport (3.2.12) lib/active_support/callbacks.rb:81:in run_callbacks' actionpack (3.2.12) lib/action_dispatch/middleware/callbacks.rb:27:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/reloader.rb:65:in call' rack (1.4.5) lib/rack/sendfile.rb:102:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/remote_ip.rb:31:in call' actionpack (3.2.12) lib/action_dispatch/middleware/debug_exceptions.rb:16:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/show_exceptions.rb:56:in call' railties (3.2.12) lib/rails/rack/logger.rb:32:in
call_app'
railties (3.2.12) lib/rails/rack/logger.rb:16:in call' activesupport (3.2.12) lib/active_support/tagged_logging.rb:22:in
tagged'
railties (3.2.12) lib/rails/rack/logger.rb:16:in call' actionpack (3.2.12) lib/action_dispatch/middleware/request_id.rb:22:in
call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in call' rack (1.4.5) lib/rack/runtime.rb:17:in
call'
activesupport (3.2.12) lib/active_support/cache/strategy/local_cache.rb:72:in call' rack (1.4.5) lib/rack/lock.rb:15:in
call'
actionpack (3.2.12) lib/action_dispatch/middleware/static.rb:62:in call' railties (3.2.12) lib/rails/engine.rb:479:in
call'
railties (3.2.12) lib/rails/application.rb:223:in call' railties (3.2.12) lib/rails/railtie/configurable.rb:30:in
send'
railties (3.2.12) lib/rails/railtie/configurable.rb:30:in method_missing' passenger (3.0.19) lib/phusion_passenger/rack/request_handler.rb:96:in
process_request'
passenger (3.0.19) lib/phusion_passenger/abstract_request_handler.rb:516:in accept_and_process_next_request' passenger (3.0.19) lib/phusion_passenger/abstract_request_handler.rb:274:in
main_loop'
passenger (3.0.19) lib/phusion_passenger/rack/application_spawner.rb:206:in start_request_handler' passenger (3.0.19) lib/phusion_passenger/rack/application_spawner.rb:171:in
send'
passenger (3.0.19) lib/phusion_passenger/rack/application_spawner.rb:171:in handle_spawn_application' passenger (3.0.19) lib/phusion_passenger/utils.rb:470:in
safe_fork'
passenger (3.0.19) lib/phusion_passenger/rack/application_spawner.rb:166:in handle_spawn_application' passenger (3.0.19) lib/phusion_passenger/abstract_server.rb:357:in
send'
passenger (3.0.19) lib/phusion_passenger/abstract_server.rb:357:in server_main_loop' passenger (3.0.19) lib/phusion_passenger/abstract_server.rb:206:in
start_synchronously'
passenger (3.0.19) lib/phusion_passenger/abstract_server.rb:180:in start' passenger (3.0.19) lib/phusion_passenger/rack/application_spawner.rb:129:in
start'
passenger (3.0.19) lib/phusion_passenger/spawn_manager.rb:253:in spawn_rack_application' passenger (3.0.19) lib/phusion_passenger/abstract_server_collection.rb:132:in
lookup_or_add'
passenger (3.0.19) lib/phusion_passenger/spawn_manager.rb:246:in spawn_rack_application' passenger (3.0.19) lib/phusion_passenger/abstract_server_collection.rb:82:in
synchronize'
passenger (3.0.19) lib/phusion_passenger/abstract_server_collection.rb:79:in synchronize' passenger (3.0.19) lib/phusion_passenger/spawn_manager.rb:244:in
spawn_rack_application'
passenger (3.0.19) lib/phusion_passenger/spawn_manager.rb:137:in spawn_application' passenger (3.0.19) lib/phusion_passenger/spawn_manager.rb:275:in
handle_spawn_application'
passenger (3.0.19) lib/phusion_passenger/abstract_server.rb:357:in __send__' passenger (3.0.19) lib/phusion_passenger/abstract_server.rb:357:in
server_main_loop'
passenger (3.0.19) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
passenger (3.0.19) helper-scripts/passenger-spawn-server:99
rails3では、request.body.gsub!ではbodyは書き換えられていないようです。
以下の変更を行うといけるようです。
http://github.com/hasimo/jpmobile/commit/5697212634c4141a8727b821b0cc708e3b5e36f2
以下のようになおしてみました。
hasimo@4aa38a0
gemの設定を変更する
vendor/jpmobile-ipaddresses , vendor/jpmobile-terminfoがない場合エラーとなるようです
$ rake
rake aborted!
uninitialized constant Git
/Users/sulky/git/jpmobile/Rakefile:65
Jpmobile::Mailer::Baseを使用してメールの受信を行おうとしているのですが、iPhone(au)からのメールを受信した時に例外が発生します。
どうやら、本文中に「日」のような2バイト目に0x7Cが含まれている場合に例外が発生する模様です。
ちなみに、ActionMailer::Baseでは、受信できるのですが、ガラケーの利用も考えているので、Jpmobileで受信を行いたいと考えています。
以上、よろしくお願いします。
`eval': "l" followed by "\e" on ISO-2022-JP (Encoding::InvalidByteSequenceError)
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/runner.rb:53:in `eval': "l" followed by "\e" on ISO-2022-JP (Encoding::InvalidByteSequenceError) from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/util.rb:146:in `jis_to_utf8' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mobile/au.rb:123:in `to_mail_internal' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mobile/abstract_mobile.rb:160:in `decode_transfer_encoding' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mail.rb:276:in `convert_encoding_jpmobile' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mail.rb:98:in `parse_message_with_jpmobile' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mail.rb:109:in `init_with_string' from
/usr/lib/ruby/gems/1.9.1/gems/mail-2.4.4/lib/mail/message.rb:125:in `initialize' from
/usr/lib/ruby/gems/1.9.1/gems/mail-2.4.4/lib/mail/mail.rb:50:in `new' from
/usr/lib/ruby/gems/1.9.1/gems/mail-2.4.4/lib/mail/mail.rb:50:in `new' from
/usr/lib/ruby/gems/1.9.1/gems/actionmailer-3.2.1/lib/action_mailer/base.rb:401:in `block in receive' from
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/notifications.rb:123:in `block in instrument' from
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument' from
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/notifications.rb:123:in `instrument' from
/usr/lib/ruby/gems/1.9.1/gems/actionmailer-3.2.1/lib/action_mailer/base.rb:400:in `receive' from (eval):1:in `<top (required)>' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/runner.rb:53:in `eval' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/runner.rb:53:in `<top (required)>' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:64:in `require' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:64:in `<top (required)>' from script/rails:6:in `require' from
script/rails:6:in `<main>'
ruby : ruby 1.9.3p194 (2012-04-20) [i686-linux]
rails : 3.2.1
jpmobile : 3.0.4
I just realized that I didn't have jpmobile repo in my machine because the everyone's favourite, life-changing, super-useful gem-src
plugin fails to find the repo because the gemspec's "homepage" is set to something different from the GH URL, and source_code_uri is not properly set.
So, could you please configure the gem's "source_code_uri" from rubygems.org via the following steps?
Thanks!
git clone
後にbundle install
時の capybara-webkit のインストールにおいて、qmakeコマンドが無いためエラーとなりました。
% bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.4.2
Installing i18n 0.7.0
Installing json 1.8.3
Installing minitest 5.7.0
Installing thread_safe 0.3.5
Installing tzinfo 1.2.2
Installing activesupport 4.2.3
Installing builder 3.2.2
Installing erubis 2.7.0
Installing mini_portile 0.6.2
Installing nokogiri 1.6.6.2
Installing rails-deprecated_sanitizer 1.0.3
Installing rails-dom-testing 1.0.6
Installing loofah 2.0.2
Installing rails-html-sanitizer 1.0.2
Installing actionview 4.2.3
Installing rack 1.6.4
Installing rack-test 0.6.3
Installing actionpack 4.2.3
Installing globalid 0.3.5
Installing activejob 4.2.3
Installing mime-types 2.6.1
Installing mail 2.6.3
Installing actionmailer 4.2.3
Installing activemodel 4.2.3
Installing arel 6.0.0
Installing activerecord 4.2.3
Using bundler 1.9.9
Installing xpath 2.0.0
Installing capybara 2.4.4
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/ippe/.rbenv/versions/2.2.2/bin/ruby -r ./siteconf20150627-32583-1rwnvoi.rb extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/ippe/.rbenv/versions/2.2.2/bin/$(RUBY_BASE_NAME)
--with-gl-dir
--without-gl-dir
--with-gl-include
--without-gl-include=${gl-dir}/include
--with-gl-lib
--without-gl-lib=${gl-dir}/lib
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
Command 'qmake ' not available
extconf failed, exit code 1
Gem files will remain installed in /Users/ippe/sezemi/oss_hack_beginners/jpmobile/vendor/bundle/ruby/2.2.0/gems/capybara-webkit-1.6.0 for inspection.
Results logged to /Users/ippe/sezemi/oss_hack_beginners/jpmobile/vendor/bundle/ruby/2.2.0/extensions/x86_64-darwin-13/2.2.0-static/capybara-webkit-1.6.0/gem_make.out
An error occurred while installing capybara-webkit (1.6.0), and Bundler cannot continue.
Make sure that `gem install capybara-webkit -v '1.6.0'` succeeds before bundling.
下記Webサイトを参考にして、Qtをインストールすることで解決しました。
Installing Qt and compiling capybara webkit
開発者向けドキュメントを用意して、Qtのインストールを手順に含めると良いと思いましたがいかがでしょうか。
hankaku_filter :input=>trueにすると出力されるHTMLのmetaタグ内のcontent_typeが以下の形で強制で出力される(ソースでshift_JISを指定しても置換される)。Jpmobile::HankakuFilter#to_externalにてnokogiriのparseが文字コードに即した形で(内部ではUTFなので)自動変換していると思われる。
wardenでset_userを利用したときなどに設定される、
session_options[:renew] が trueの場合に、セッションIDが再生成されないようです。
destroy_sessionはsession_options[:drop]がtrueで無い場合、
新しいセッションIDを生成して返すのが正しい動作だと思いますが、
ActiveRecord::SessionStore::destroy_session_with_jpmobile
では、引数から与えられたsession_idをそのまま返却しているため、
以前のセッションIDが再度利用されてしまうようです。
これは意図通りの動作でしょうか?
3.0.4からTabletクラスが追加されてindex_tablet.html.erbがない場合にはindex_smart_phone.html.erbを使うようになっていますが、スマートフォン版よりはPC版の方がタブレット向きの画面になっているためPC用(index.html.erb)のviewを使いたいというケースがあります。
config/initializers/jpmobile.rb に以下のコードを追加して対応していますが、configなどで簡単に切り替えられるようにできないでしょうか?
class Jpmobile::Mobile::Tablet
def variants
[]
end
end
ご検討のほどよろしくお願いします。
ruby1.8系で、0x8150(sjis)がU+FFE3 (FULLWIDTH MACRON) に変換されずに
U+203E (OVERLINE) に変換されているようです。
NKFに--ic=windows-31jをつけるとFULLWIDTH MACRONに変換されそうです。
NKF.nkf("-m0 -x -w --ic=windows-31j", sjis_str)
production 環境で hankaku_filterを使うと下記のエラーが出ます。
development 環境で使っている時は正常に動いていました。
■使用バージョン
rails 3.2.0
jpmobile 3.0.1
■ソース
class ApplicationController < ActionController::Base
protect_from_forgery
include Jpmobile::ViewSelector
hankaku_filter :input => true
...
end
■エラーログ
NameError (uninitialized constant Jpmobile::HankakuFilter::Nokogiri):
jpmobile (3.0.1) lib/jpmobile/filter.rb:61:in `to_external'
jpmobile (3.0.1) lib/jpmobile/filter.rb:46:in `after'
jpmobile (3.0.1) lib/jpmobile/filter.rb:10:in `block in hankaku_filter'
activesupport (3.2.0) lib/active_support/callbacks.rb:449:in `_run__1901410530977572378__process_action__4061666883376695914__callbacks'
activesupport (3.2.0) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.0) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
...
Rails 3.2.0 + jpmobile 3.0.0 で、rails-footnotes ( https://github.com/josevalim/rails-footnotes ) といったコントローラに関係する gem を併用すると、表題の例外が発生するようです。
サンプルをアップしておきました。
https://github.com/milk1000cc/jpmobile-test
mail メソッドで :to がない場合に、エラーになる。
default で設定している場合に問題となるので :to がない場合に default_params を見て取得するようにする。
またメールアドレスの respond_to?(:split) を見て、false の場合は何もしないように変更する。
Rails 3.2.1 から少しずつバージョンを上げて 3.2.7 まで上げたのですが、3.2.8 まで上げると、ビューファイルに記述した下記のようなコードのところでエラーとなってしまいました
(深く追ってみようとしたのですが、力量不足で、どこが原因なのかわかりませんでした)
<% if request.smart_phone? %>
スマートフォンからのアクセスです。
<% else %>
スマートフォンからのアクセスではありません。
<% end %>
ActionView::Template::Error (undefined method `smart_phone?' for nil:NilClass):
質問なのですが、jpmobile って、Rails 3.2.8 にも対応しておりますでしょうか?もし対応しているのであればアプリ側の原因だと思うので、なんとか力技でエラーを回避しようと思うのですが。。。
jpmobileをgit clone
し、
bundle install
をし、
テストを実行すると下記のエラーが発生します。
% bundle exec rspec (git)-[master]
IP Address test requires jpmobile-ipaddresses module
Terminal display information test requires jpmobile-terminfo module
IP Address test requires jpmobile-ipaddresses module
Terminal display information test requires jpmobile-terminfo module
Run options:
include {:focus=>true}
exclude {:broken=>true}
All examples were filtered out; ignoring {:focus=>true}
.............F.FF.....................F.F...********...................................................................................F.FF...F..........................................................................................................................................................................F.................................................................................................FFFFFFFFFFFFFF......................................
Pending: (Failures listed here are expected and do not affect your suite's status)
1) 絵文字が PC で絵文字を変換するとき Jpmobile::Emoticon.pc_emoticon? がtrueになること
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:71
2) 絵文字が PC で絵文字を変換するとき docomo 絵文字が画像に変換されること
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:75
3) 絵文字が PC で絵文字を変換するとき docomo 絵文字コードが画像に変換されること
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:80
4) 絵文字が PC で絵文字を変換するとき au 絵文字が画像に変換されること
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:85
5) 絵文字が PC で絵文字を変換するとき au 絵文字コードが画像に変換されること
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:90
6) 絵文字が PC で絵文字を変換するとき softbank 絵文字が画像に変換されること
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:95
7) 絵文字が PC で絵文字を変換するとき softbank 絵文字コードが画像に変換されること
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:100
8) 絵文字が PC で絵文字を変換するとき Content-Type が変換できないものである場合には変換しないこと
# emoticon.yaml and emoticons directory don't exists
# ./spec/rack/jpmobile/emoticon_spec.rb:105
Failures:
1) Jpmobile::Rack::MobileCarrier au IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
Failure/Error: expect(env['rack.jpmobile'].valid_ip?).to be_truthy
expected: truthy value
got: false
# ./spec/rack/jpmobile/au_spec.rb:160:in `block (3 levels) in <top (required)>'
2) Jpmobile::Rack::MobileCarrier au 画面情報で 端末の画面サイズを正しく取得できること
Failure/Error: expect(env['rack.jpmobile'].display.width).to eq(240)
NameError:
uninitialized constant Jpmobile::Mobile::Terminfo
# ./lib/jpmobile/mobile/abstract_mobile.rb:41:in `display'
# ./spec/rack/jpmobile/au_spec.rb:184:in `block (3 levels) in <top (required)>'
3) Jpmobile::Rack::MobileCarrier au 画面情報で 端末の画面情報が渡ってない場合に正しく動作すること
Failure/Error: expect(env['rack.jpmobile'].display.width).to be_nil
NameError:
uninitialized constant Jpmobile::Mobile::Terminfo
# ./lib/jpmobile/mobile/abstract_mobile.rb:41:in `display'
# ./spec/rack/jpmobile/au_spec.rb:196:in `block (3 levels) in <top (required)>'
4) Jpmobile::Rack::MobileCarrier docomo IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
Failure/Error: expect(env['rack.jpmobile'].valid_ip?).to be_truthy
expected: truthy value
got: false
# ./spec/rack/jpmobile/docomo_spec.rb:208:in `block (3 levels) in <top (required)>'
5) Jpmobile::Rack::MobileCarrier docomo 端末サイズ SO506iCのサイズを適切に取得できること
Failure/Error: expect(env['rack.jpmobile'].display.browser_width).to eq(240)
NameError:
uninitialized constant Jpmobile::Mobile::Terminfo
# ./lib/jpmobile/mobile/abstract_mobile.rb:41:in `display'
# ./spec/rack/jpmobile/docomo_spec.rb:229:in `block (3 levels) in <top (required)>'
6) Jpmobile::Rack::MobileCarrier softbank IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
Failure/Error: expect(env['rack.jpmobile'].valid_ip?).to be_truthy
expected: truthy value
got: false
# ./spec/rack/jpmobile/softbank_spec.rb:76:in `block (3 levels) in <top (required)>'
7) Jpmobile::Rack::MobileCarrier softbank 画面情報で 端末の画面サイズを正しく取得できること
Failure/Error: expect(env['rack.jpmobile'].display.width).to eq(240)
NameError:
uninitialized constant Jpmobile::Mobile::Terminfo
# ./lib/jpmobile/mobile/abstract_mobile.rb:41:in `display'
# ./spec/rack/jpmobile/softbank_spec.rb:99:in `block (3 levels) in <top (required)>'
8) Jpmobile::Rack::MobileCarrier softbank 画面情報で 端末の画面情報が渡ってない場合に正しく動作すること
Failure/Error: expect(env['rack.jpmobile'].display.width).to be_nil
NameError:
uninitialized constant Jpmobile::Mobile::Terminfo
# ./lib/jpmobile/mobile/abstract_mobile.rb:41:in `display'
# ./spec/rack/jpmobile/softbank_spec.rb:113:in `block (3 levels) in <top (required)>'
9) Jpmobile::Rack::MobileCarrier willcom IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
Failure/Error: expect(env['rack.jpmobile'].valid_ip?).to be_truthy
expected: truthy value
got: false
# ./spec/rack/jpmobile/willcom_spec.rb:54:in `block (3 levels) in <top (required)>'
10) Jpmobile::Mail delivering delivers through SMTP
Failure/Error: expect {
expected no Exception, got #<Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 25> with backtrace:
# ./vendor/bundle/ruby/2.2.0/gems/mail-2.6.3/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
# ./vendor/bundle/ruby/2.2.0/gems/mail-2.6.3/lib/mail/message.rb:2141:in `do_delivery'
# ./vendor/bundle/ruby/2.2.0/gems/mail-2.6.3/lib/mail/message.rb:238:in `deliver'
# ./spec/unit/mail_spec.rb:347:in `block (4 levels) in <top (required)>'
# ./spec/unit/mail_spec.rb:346:in `block (3 levels) in <top (required)>'
# ./spec/unit/mail_spec.rb:346:in `block (3 levels) in <top (required)>'
11) Jpmobile::Mobile::valid_ip? should be return true if 210.153.84.1 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
12) Jpmobile::Mobile::valid_ip? should be return true if 210.153.84.254 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
13) Jpmobile::Mobile::valid_ip? should be return true if 210.230.128.225 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
14) Jpmobile::Mobile::valid_ip? should be return true if 210.230.128.238 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
15) Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.1 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
16) Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.31 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
17) Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.1 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
18) Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.31 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
19) Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.1 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
20) Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.254 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
21) Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.1 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
22) Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.254 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
23) Jpmobile::Mobile::valid_ip? should be return true if 117.55.1.224 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
24) Jpmobile::Mobile::valid_ip? should be return true if 117.55.1.254 is in carrier address
Failure/Error: expect(Jpmobile::Mobile.const_get(carrier).valid_ip?(remote_ip)).to eq(true)
expected: true
got: false
(compared using ==)
# ./spec/unit/valid_ip_spec.rb:21:in `block (3 levels) in <top (required)>'
Finished in 1.99 seconds (files took 0.88327 seconds to load)
463 examples, 24 failures, 8 pending
Failed examples:
rspec ./spec/rack/jpmobile/au_spec.rb:153 # Jpmobile::Rack::MobileCarrier au IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
rspec ./spec/rack/jpmobile/au_spec.rb:175 # Jpmobile::Rack::MobileCarrier au 画面情報で 端末の画面サイズを正しく取得できること
rspec ./spec/rack/jpmobile/au_spec.rb:190 # Jpmobile::Rack::MobileCarrier au 画面情報で 端末の画面情報が渡ってない場合に正しく動作すること
rspec ./spec/rack/jpmobile/docomo_spec.rb:201 # Jpmobile::Rack::MobileCarrier docomo IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
rspec ./spec/rack/jpmobile/docomo_spec.rb:223 # Jpmobile::Rack::MobileCarrier docomo 端末サイズ SO506iCのサイズを適切に取得できること
rspec ./spec/rack/jpmobile/softbank_spec.rb:69 # Jpmobile::Rack::MobileCarrier softbank IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
rspec ./spec/rack/jpmobile/softbank_spec.rb:91 # Jpmobile::Rack::MobileCarrier softbank 画面情報で 端末の画面サイズを正しく取得できること
rspec ./spec/rack/jpmobile/softbank_spec.rb:107 # Jpmobile::Rack::MobileCarrier softbank 画面情報で 端末の画面情報が渡ってない場合に正しく動作すること
rspec ./spec/rack/jpmobile/willcom_spec.rb:47 # Jpmobile::Rack::MobileCarrier willcom IPアドレス制限で 正しいIPアドレス空間からのアクセスを判断できること
rspec ./spec/unit/mail_spec.rb:344 # Jpmobile::Mail delivering delivers through SMTP
rspec ./spec/unit/valid_ip_spec.rb[1:1] # Jpmobile::Mobile::valid_ip? should be return true if 210.153.84.1 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:2] # Jpmobile::Mobile::valid_ip? should be return true if 210.153.84.254 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:3] # Jpmobile::Mobile::valid_ip? should be return true if 210.230.128.225 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:4] # Jpmobile::Mobile::valid_ip? should be return true if 210.230.128.238 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:5] # Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.1 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:6] # Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.31 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:7] # Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.1 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:8] # Jpmobile::Mobile::valid_ip? should be return true if 123.108.237.31 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:9] # Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.1 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:10] # Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.254 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:11] # Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.1 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:12] # Jpmobile::Mobile::valid_ip? should be return true if 61.198.142.254 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:13] # Jpmobile::Mobile::valid_ip? should be return true if 117.55.1.224 is in carrier address
rspec ./spec/unit/valid_ip_spec.rb[1:14] # Jpmobile::Mobile::valid_ip? should be return true if 117.55.1.254 is in carrier address
上記のエラーはjpmobile-ipaddressesとjpmobile-terminfoがインストールされていないためです。
T/O
Parameters: {"authenticity_token"=>"ce4xlI+Hpu8fLf7pWhVafNvVJeOQknezBGIXZVtOIDU=", "user"=>{"name"=>"aaaaaa", "name_confirmation"=>""}, "commit"=>"Create User"}
の場合にmobile_filterを通すと下記の部分で、パラメータが落ちてしまいます。
以下のように変更したところ問題が解決しました。
ご確認いただけますでしょうか?
--- a/vendor/plugins/jpmobile/lib/jpmobile/rack/params_filter.rb
+++ b/vendor/plugins/jpmobile/lib/jpmobile/rack/params_filter.rb
@@ -37,7 +37,7 @@ module Jpmobile
k, v = param_pair.split("=")
k = to_internal(k) if k
v = to_internal(v) if v
- new_array << "#{k}=#{v}" if k and v
+ new_array << "#{k}=#{v}" if k
end
new_array.join("&")
docomoのキャリアメールの受信でメールに絵文字が含まれている場合、絵文字が〓に変換されてしまいます。
全ての絵文字でテストしましたが、全て〓になってしまいました。
日本語そのままだとTreeTopのparseに引っかからないらしく、現在対応中。
Jpmobileから送信されたメールをiPhoneで受信し、リプライした時に例外が発生します。
エラーになるメールは以前送らせていただきました。
`eval': "\xE3" on ISO-2022-JP (Encoding::InvalidByteSequenceError)
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/runner.rb:53:in `eval': "\xE3" on ISO-2022-JP (Encoding::InvalidByteSequenceError) from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/util.rb:146:in `jis_to_utf8' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mobile/au.rb:116:in `to_mail_internal' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mobile/abstract_mobile.rb:160:in `decode_transfer_encoding' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mail.rb:283:in `convert_encoding_jpmobile' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mail.rb:99:in `parse_message_with_jpmobile' from
/usr/lib/ruby/gems/1.9.1/gems/jpmobile-3.0.4/lib/jpmobile/mail.rb:110:in `init_with_string' from
/usr/lib/ruby/gems/1.9.1/gems/mail-2.4.4/lib/mail/message.rb:125:in `initialize' from
/usr/lib/ruby/gems/1.9.1/gems/mail-2.4.4/lib/mail/mail.rb:50:in `new' from
/usr/lib/ruby/gems/1.9.1/gems/mail-2.4.4/lib/mail/mail.rb:50:in `new' from
/usr/lib/ruby/gems/1.9.1/gems/actionmailer-3.2.1/lib/action_mailer/base.rb:401:in `block in receive' from
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/notifications.rb:123:in `block in instrument' from
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument' from
/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/notifications.rb:123:in `instrument' from
/usr/lib/ruby/gems/1.9.1/gems/actionmailer-3.2.1/lib/action_mailer/base.rb:400:in `receive' from (eval):1:in `<top (required)>' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/runner.rb:53:in `eval' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/runner.rb:53:in `<top (required)>' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:64:in `require' from
/usr/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:64:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
ruby : ruby 1.9.3p194 (2012-04-20) [i686-linux]
rails : 3.2.1
jpmobile : 3.0.4 + 68fbf6e パッチ
以上、宜しくお願いいたします。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.