Module: Lolita::Extensions
- Defined in:
- lib/lolita/extensions/extensions.rb,
lib/lolita/extensions/authorization/proxy.rb,
lib/lolita/extensions/authentication/proxy.rb,
lib/lolita/extensions/authorization/cancan_adapter.rb,
lib/lolita/extensions/authorization/pundit_adapter.rb,
lib/lolita/extensions/authentication/devise_adapter.rb,
lib/lolita/extensions/authorization/default_adapter.rb,
lib/lolita/extensions/authentication/default_adapter.rb
Overview
This module provides functionality for extension machinery in Lolita. It loads proxies on demand.
Defined Under Namespace
Modules: Authentication, Authorization
Constant Summary
collapse
- EXTENSIONS =
[]
Class Method Summary
collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/lolita/extensions/extensions.rb', line 6
def method_missing method_name, *args, &block
if method_name[/_proxy$/]
type = method_name.to_s.sub(/_proxy$/,"")
self.class_eval " def \#{method_name}(*args,&block)\n unless __extensions_proxies[:\#{type}]\n load_extension_proxy(:\#{type},self,__proxy_options_from_context)\n end\n __extensions_proxies[:\#{type}]\n end\n EXTENSION\n send(method_name)\n else\n super\n end\nend\n",__FILE__,__LINE__+1
|
Class Method Details
.add(type) ⇒ Object
41
42
43
|
# File 'lib/lolita/extensions/extensions.rb', line 41
def self.add type
EXTENSIONS << type unless EXTENSIONS.include?(type)
end
|
Instance Method Details
#load_extension_proxy(type, context = self, options = {}) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/lolita/extensions/extensions.rb', line 29
def load_extension_proxy type,context=self,options={}
proxy_class = "Lolita::Extensions::#{type.to_s.camelize}::Proxy".constantize
initialize_arity = proxy_class.instance_method(:initialize).arity
__extensions_proxies[type] = if initialize_arity < 0 || initialize_arity > 1
proxy_class.new(context,options)
elsif initialize_arity == 0
proxy_class.new
else
proxy_class.new(context)
end
end
|
#load_extensions_proxies(context = self, options = {}) ⇒ Object
23
24
25
26
27
|
# File 'lib/lolita/extensions/extensions.rb', line 23
def load_extensions_proxies(context=self, options={})
EXTENSIONS.each do |type|
load_extension_proxy(type,context,options)
end
end
|