2011-02-26 36 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{}