lib/draper/helper_proxy.rb in draper-1.0.0 vs lib/draper/helper_proxy.rb in draper-1.1.0

- old
+ new

@@ -1,17 +1,36 @@ module Draper # Provides access to helper methods - both Rails built-in helpers, and those # defined in your application. class HelperProxy + # @overload initialize(view_context) + def initialize(view_context = nil) + view_context ||= current_view_context # backwards compatibility + + @view_context = view_context + end + # Sends helper methods to the view context. def method_missing(method, *args, &block) - view_context.send(method, *args, &block) + self.class.define_proxy method + send(method, *args, &block) end + protected + + attr_reader :view_context + private - def view_context - Draper::ViewContext.current + def self.define_proxy(name) + define_method name do |*args, &block| + view_context.send(name, *args, &block) + end + end + + def current_view_context + ActiveSupport::Deprecation.warn("wrong number of arguments (0 for 1) passed to Draper::HelperProxy.new", caller[1..-1]) + Draper::ViewContext.current.view_context end end end