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