使用Rack :: SslEnforcer初始化时的参数错误
问题描述:
尝试使用rack-ssl-enforcer时出现参数错误。 错误来自初始化!在environment.rb中调用。使用Rack :: SslEnforcer初始化时的参数错误
我使用的版本在https://github.com/pelle/rack-ssl-enforcer
在application.rb中:
module MyApp
class Application < Rails::Application
config.middleware.use Rack::SslEnforcer, :except => ["/login", "/logout", /^\/static\//, "/"]
end
end
堆栈跟踪如下:
/Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:33:in `initialize': wrong number of arguments (2 for 0) (ArgumentError)
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:33:in `new'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:33:in `build'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `build'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/application.rb:208:in `inject'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `each'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `inject'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `build'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/application.rb:162:in `build_middleware_stack'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/application/finisher.rb:35
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/initializable.rb:25:in `instance_exec'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/initializable.rb:25:in `run'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/initializable.rb:50:in `run_initializers'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/initializable.rb:49:in `each'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/initializable.rb:49:in `run_initializers'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/application.rb:134:in `initialize!'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/application.rb:77:in `send'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/railties-3.0.1/lib/rails/application.rb:77:in `method_missing'
from /Users/adamwilson/work/rails/tuteon-rails/trunk/tuteon/config/environment.rb:5
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in `require'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in `require'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:225:in `load_dependency'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:591:in `new_constants_in'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:225:in `load_dependency'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in `require'
from /Users/adamwilson/work/rails/tuteon-rails/trunk/tuteon/config.ru:3
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/rack-1.2.1/lib/rack/builder.rb:46:in `instance_eval'
from /Users/adamwilson/work/ruby/gems/.bundler/ruby/1.8/gems/rack-1.2.1/lib/rack/builder.rb:46:in `initialize'
from /Users/adamwilson/work/rails/tuteon-rails/trunk/tuteon/config.ru:1:in `new'
from /Users/adamwilson/work/rails/tuteon-rails/trunk/tuteon/config.ru:1
答
我能想到的唯一的事情是,它不是没有父亲的情况下正确评估为函数调用。尝试:
module MyApp
class Application < Rails::Application
config.middleware.use(Rack::SslEnforcer, :except => ["/login", "/logout", /^\/static\//, "/"])
end
end
看起来像一个远投。该语法看起来是有效的,并遵循SslEnforced README中的示例,无法想象为什么它会给你提供那个错误,而不是挑剔关于parens,并以某种方式错误地解释选项散列。
答
那是因为你的正则表达式不裹在%r{}
你把在环境或application.rb中? – 2011-02-26 14:54:09
这是在application.rb ..更新了问题。谢谢 – Adamski 2011-02-26 17:38:17