lib/rspec/rails/view_assigns.rb
module RSpec module Rails module ViewAssigns extend ActiveSupport::Concern module InstanceMethods # :call-seq: # assign(:widget, stub_model(Widget)) # # Assigns a value to an instance variable in the scope of the # view being rendered. def assign(key, value) _encapsulated_assigns[key] = value end def view_assigns begin # TODO: _assigns was deprecated in favor of view_assigns after # Rails-3.0.0 was released. Since we are not able to predict when # the _assigns/view_assigns patch will be released (I thought it # would have been in 3.0.1, but 3.0.1 bypassed this change for a # security fix), this bit ensures that we do the right thing without # knowing anything about the Rails version we are dealing with. # # Once that change _is_ released, this can be changed to something # that checks for the Rails version when the module is being # interpreted, as it was before commit dd0095. super.merge(_encapsulated_assigns) rescue _assigns end end def _assigns super.merge(_encapsulated_assigns) end private def _encapsulated_assigns @_encapsulated_assigns ||= {} end end end end end