ArgumentError при инициализации с помощью Rack :: SslEnforcer - PullRequest
0 голосов
/ 26 февраля 2011

Я получаю ошибку аргумента при попытке использовать rack-ssl -forcer. Ошибка исходит от инициализации! звонок в environment.rb.

Я использую версию на https://github.com/pelle/rack-ssl-enforcer

В приложении. 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

Ответы [ 2 ]

1 голос
/ 16 марта 2012

потому что ваше регулярное выражение не заключено в %r{}

0 голосов
/ 27 февраля 2011

Единственное, о чем я могу думать, это то, что он не оценивается должным образом как вызов функции без паренов.Попробуйте:

module MyApp
  class Application < Rails::Application

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

Похоже на длинный выстрел.Синтаксис выглядит корректным и следует примерам из SslEnforced README, не могу себе представить, почему он дает вам такую ​​ошибку, кроме того, что разборчив в паренсе и каким-то образом неправильно интерпретирует хэш опций.

...