From 9f3bbe7a6120aadae1c4d3640681b2dd4372de4d Mon Sep 17 00:00:00 2001 From: Shin-ichiro OGAWA Date: Tue, 26 Oct 2010 16:33:29 +0900 Subject: [PATCH] Move trans_sid, apply_trans_sid? from ActionController::Base to ActionController::Metal Signed-off-by: Shin-ichiro OGAWA --- lib/jpmobile/trans_sid.rb | 2 +- lib/tasks/jpmobile_tasks.rake | 2 +- .../app/controllers/trans_sid_metal_controller.rb | 15 +++++++++++++++ .../overrides/spec/requests/trans_sid_spec.rb | 14 ++++++++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 test/rails/overrides/app/controllers/trans_sid_metal_controller.rb diff --git a/lib/jpmobile/trans_sid.rb b/lib/jpmobile/trans_sid.rb index b50d10ac..540ed37b 100644 --- a/lib/jpmobile/trans_sid.rb +++ b/lib/jpmobile/trans_sid.rb @@ -61,7 +61,7 @@ def redirect_to_with_jpmobile(options = {}, response_status = {}) alias_method_chain :redirect_to, :jpmobile end - class Base #:nodoc: + class Metal #:nodoc: class_inheritable_accessor :trans_sid_mode class << self diff --git a/lib/tasks/jpmobile_tasks.rake b/lib/tasks/jpmobile_tasks.rake index 04469e4b..0852dcf9 100644 --- a/lib/tasks/jpmobile_tasks.rake +++ b/lib/tasks/jpmobile_tasks.rake @@ -98,7 +98,7 @@ END # ruby "-S bundle install" ruby "-S rake db:migrate test" ruby "-S rake spec" - # ruby "-S rspec -b --color spec/requests/filter_spec.rb -e 'jpmobile integration spec HankakuInputFilterController DoCoMo SH902i からのアクセス はtextareaの中では半角に変換されないこと'" + # ruby "-S rspec -b --color spec/requests/trans_sid_spec.rb -e 'trans_sid functional TransSidMetalController という ActionController::Metal のコントローラ で redirect_to がエラーにならない'" cd relative_root end diff --git a/test/rails/overrides/app/controllers/trans_sid_metal_controller.rb b/test/rails/overrides/app/controllers/trans_sid_metal_controller.rb new file mode 100644 index 00000000..d427e1f2 --- /dev/null +++ b/test/rails/overrides/app/controllers/trans_sid_metal_controller.rb @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +class TransSidMetalController < ActionController::Metal + include ActionController::RackDelegation + include ActionController::UrlFor + include ActionController::Redirecting + include Rails.application.routes.url_helpers + + # 事前にセッションを作成しないと trans_sid が有効にならない + # before_filter :session_init + # trans_sid :always + + def redirect + redirect_to('/') + end +end diff --git a/test/rails/overrides/spec/requests/trans_sid_spec.rb b/test/rails/overrides/spec/requests/trans_sid_spec.rb index 6bea427f..76c04321 100644 --- a/test/rails/overrides/spec/requests/trans_sid_spec.rb +++ b/test/rails/overrides/spec/requests/trans_sid_spec.rb @@ -144,6 +144,20 @@ def describe_mobile_with_ua(user_agent, charset, &block) it_should_behave_like "trans_sid が起動するとき" end + describe TransSidMetalController, "という ActionController::Metal のコントローラ" do + before(:each) do + @controller = "trans_sid_metal" + @user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)" + @charset = "UTF-8" + end + + it "で redirect_to がエラーにならない" do + res = get_with_session(@controller, "redirect", @user_agent) + + res.response.should be_redirect + end + end + describe TransSidMobileController, "という trans_sid :mobile が指定されているコントローラ" do before(:each) do @controller = "trans_sid_mobile"