2011-02-26 47 views
0

尝试使用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 
+0

你把在环境或application.rb中? – 2011-02-26 14:54:09

+0

这是在application.rb ..更新了问题。谢谢 – Adamski 2011-02-26 17:38:17

回答

0

我能想到的唯一的事情是,它不是没有父亲的情况下正确评估为函数调用。尝试:

module MyApp 
    class Application < Rails::Application 

    config.middleware.use(Rack::SslEnforcer, :except => ["/login", "/logout", /^\/static\//, "/"]) 
    end 
end 

看起来像一个远投。该语法看起来是有效的,并遵循SslEnforced README中的示例,无法想象为什么它会给你提供那个错误,而不是挑剔关于parens,并以某种方式错误地解释选项散列。

+0

谢谢 - 但我仍然在启动服务器时出现错误。 – Adamski 2011-02-27 23:35:48

+0

您是否检查过您安装的“机架”宝石的版本?看起来你的Rack :: Middleware API与预期不同。 – Winfield 2011-02-28 02:18:58

+0

宝石清单显示:机架(1.2.1,1.1.0,1.0.1) – Adamski 2011-02-28 15:40:38

1

那是因为你的正则表达式不裹在%r{}