У меня есть загрузчик, который на данный момент включает опцию загрузки Flash как запасной вариант.Чтобы заставить загрузчик флэш-памяти работать, я должен использовать это промежуточное программное обеспечение для сохранения cookie-файлов сеанса.
Я не знаю bean-компонентов о стойке или промежуточном программном обеспечении, я виновен в том, что скопировал этот код из учебника покак исправить загрузку флэш-памяти, не понимая, что он делает.Вот код:
require 'rack/utils'
class FlashSessionCookieMiddleware
def initialize(app, session_key = '_session_id')
@app = app
@session_key = session_key
end
def call(env)
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
req = Rack::Request.new(env)
env['HTTP_COOKIE'] = [ @session_key, ::Rack::Utils.escape(req.params[@session_key]) ].join('=').freeze unless req.params[@session_key].nil?
env['HTTP_ACCEPT'] = "#{req.params['_http_accept']}".freeze unless req.params['_http_accept'].nil?
end
@app.call(env)
end
end
Это включается в инициализатор хранилища сеансов:
#initializers/session_store.rb
Rails.application.config.middleware.insert_before(
Rails.application.config.session_store,
FlashSessionCookieMiddleware,
Rails.application.config.session_options[:key])
Теперь я столкнулся с проблемой: я настраиваю пространство имен администратора для группыкуча действий только для администратора по всему сайту.Первое, что я попытался сделать, это настроить корень пространства имен администратора, например так:
namespace :admin do
root :to => 'queues#index'
end
Но это происходит сбой в промежуточном программном обеспечении со следующим сообщением об ошибке в журнале сервера:
ActionController::RoutingError (uninitialized constant Admin):
app/uploaders/flash_session_cookie_middleware.rb:16:in `call'
Итак, промежуточное ПО (которое я не понимаю) пытается вызвать Admin
(которого не существует), я полагаю, потому что это префикс маршрута?Я был бы менее удивлен, если бы он попытался вызвать AdminController
или AdminsController
.
Это действительно сбивает меня с толку, потому что другие пространства имен в моем приложении работают.Например, это работает нормально:
namespace :account do
resource :billing, :except => [:edit,:update]
resource :subscription
end
Так что что-то в промежуточном программном обеспечении и определении корня пространства имен вызывает эту проблему, и я не понимаю этого, если честно.
Если бы кто-нибудь мог объяснить, что происходит с этим промежуточным программным обеспечением, почему он вызывает конфликт с моей маршрутизацией и как это исправить, я был бы очень признателен.Спасибо!