Module: Jbuilder::Jpartial
- Defined in:
- lib/jbuilder/jpartial.rb,
lib/jbuilder/jpartial/railtie.rb,
lib/jbuilder/jpartial/version.rb
Overview
Defined Under Namespace
Classes: JbuilderProxy, JpartialHandler, Railtie
Constant Summary
collapse
- DangerousMethodName =
Class.new(ArgumentError)
- Template =
Proxy object that sends all method calls to Jpartial.jpartial
Class.new(begin
require 'active_support/proxy_object'
ActiveSupport::ProxyObject
rescue LoadError
require 'active_support/basic_object'
ActiveSupport::BasicObject
end) do
def method_missing(name, *args, &block)
name = name.to_s == 'send' ? args.first.to_sym : name
Jpartial.jpartial(name, &block)
end
end
- VERSION =
'1.1.0'.freeze
Class Method Summary
collapse
Class Method Details
._dangerous_method_name?(name) ⇒ Boolean
28
29
30
31
32
|
# File 'lib/jbuilder/jpartial.rb', line 28
def self._dangerous_method_name?(name)
!@defined_by_user.include?(name) &&
Jbuilder.method_defined?(name) ||
Jbuilder.private_method_defined?(name)
end
|
._raise_dangerous_method_name_error(name) ⇒ Object
23
24
25
26
|
# File 'lib/jbuilder/jpartial.rb', line 23
def self._raise_dangerous_method_name_error(name)
raise DangerousMethodName, "The method `##{name}` is already defined"\
' by Jbuilder. Please choose another name to define your partial'
end
|
34
35
36
|
# File 'lib/jbuilder/jpartial.rb', line 34
def self.configure
yield Template.new
end
|
.jpartial(name, &block) ⇒ Object
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/jbuilder/jpartial.rb', line 12
def self.jpartial(name, &block)
_raise_dangerous_method_name_error(name) if _dangerous_method_name?(name)
JbuilderProxy.class_eval { define_method(name, &block) }
Jbuilder.class_eval do
define_method(name) do |*args|
JbuilderProxy.new(self, @context).__send__(name, *args)
end
end
@defined_by_user << name unless @defined_by_user.include?(name)
end
|