Taken from https://github.com/intridea/omniauth/issues/239 - I’m not sure what the issue might be here, wondering if someone on Rails core might know why this behavior is happening.
It seems that it’s even easier to reproduce. If you call the following line in a before_filter:
request.env[‘warden’].authenticate(:scope => :user)
and add a middleware looking like this (to simulate OmniAuth strategy that calls app twice, each time with different env):
class Kaboom
def initialize(app)
@app = app
end
def call(env)
@app.call(env.dup) # call 1
@app.call(env) # call 2
end
end
Then params[:controller]
and params[:action]
are missing in every request.
If you remove the before filter or change the first call in the middleware to @app.call(env)
(without .dup) it works fine.