Module: RequirePatch

Defined in:
lib/require_patch.rb,
lib/require_patch/version.rb

Constant Summary collapse

VERSION =
'0.2.0'

Instance Method Summary collapse

Instance Method Details

#require_patch(plugin_name, resources, options = {}) ⇒ Object

It include patches to plugin

Examples:

Rails.config.to_prepare do
  require_patch 'awesome_plugin', ['user', 'issue', 'user_controller', 'issue_helper']
end

Parameters:

  • plugin_name (String)

    the plugin name

  • resources (Array)

    names of resources which will need patching

  • options (Hash) (defaults to: {})

    optional options



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/require_patch.rb', line 12

def require_patch(plugin_name, resources, options = {})
  default_options = {
      dir: nil,
      prefix: nil,
      postfix: 'patch'
  }

  options = default_options.merge options

  resources.to_a.each do |resource|
    require_dependency resource unless options[:skip_require_dependency]

    patch_name = [options[:prefix], resource, options[:postfix]].select(&:present?).join('_')
    resource_patch = [plugin_name, options[:dir], patch_name].select(&:present?).join('/')
    resource_constant, resource_patch_constant = [resource, resource_patch].map(&:camelize).map(&:constantize)

    resource_constant.send(:include, resource_patch_constant) unless resource_constant.included_modules.include? resource_patch_constant  
  end
end