Uploadify, Flash Sessions и Rails 2.3.8 - PullRequest
2 голосов
/ 20 марта 2011

Я использую Uploadify 2.1.4 и rails 2.3.8.Я пытаюсь применить исправление FlashSessionCookieMiddleware, которое должно сохранять информацию о сеансе во время запроса загрузки на флэш-памяти.Я применил это исправление после прочтения некоторых из этих руководств:

Однако информация о моем сеансе все еще не передается.Вот пример конфигурации моего приложения:

# config/environment.rb 

config.load_paths += %W( #{RAILS_ROOT}/config/middleware )

...

# config/middleware/flash_session_cookie_middleware.rb

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/
      params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
      env['HTTP_COOKIE'] = [ @session_key, params[@session_key] ].join('=').freeze unless params[@session_key].nil?
    end
    @app.call(env)
  end
end

ActionController::Dispatcher.middleware.insert_before(ActionController::Base.session_store, FlashSessionCookieMiddleware, ActionController::Base.session_options[:key]) 

...

// My Uploadify JS 
'fileDataName'   : 'file',
'queueID'        : 'fileQueue',
'auto'           : true,
'multi'          : true,
'method'         : 'get',
'scriptData'     : { session_key: '<%= request.session_options[:key] %>'}

Мой код промежуточного программного обеспечения загружается правильно, вот что rake middleware отображает:

use Rack::Lock
use ActionController::Failsafe
use FlashSessionCookieMiddleware, "_my_app_session"
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActiveRecord::SessionStore, #<Proc:0xb7176760@(eval):8>
use ActionController::ParamsParser
use Rack::MethodOverride
use Rack::Head
use ActionController::StringCoercion
run ActionController::Dispatcher.new

Затем я пытаюсь проверить, имеет ли последний запрос действительную информацию о сеансе / файле cookie:

# In Controller
logger.info "Session: #{session.inspect}"

, которая печатает толькопустой хеш в log / development.log:

Session: {}

[Sniff] Кто-нибудь может увидеть, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Мне удалось заставить это работать на 2.3.8 с шагами как отправлено здесь: http://railstips.org/blog/archives/2009/07/21/uploadify-and-rails23/

Единственное, что мне нужно было изменить, это flash_session_cookie_middleware.rb на следующее:

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/
        @session_key = ActionController::Base.session_options[:key]
        req = Rack::Request.new(env)
        unless req.params[@session_key].nil?
          env['HTTP_COOKIE'] = "#{@session_key}=#{req.params[@session_key]}".freeze
        end
      end

      @app.call(env)
    end
end
0 голосов
/ 17 марта 2013

для тех парней, которые хотят решить проблему с сессией путем загрузки в Rails 3.0, пожалуйста, зайдите сюда: http://www.damiangalarza.com/posts/ruby-on-rails/using-uploadify-with-rails-3/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...