Class: RequireReloader::Helper

Inherits:
Object
  • Object
show all
Includes:
ActionPackInfectorMethods
Defined in:
lib/require_reloader/helper.rb

Instance Method Summary collapse

Methods included from ActionPackInfectorMethods

#const_regexp, #constantize, #deconstantize, #demodulize, #safe_constantize

Instance Method Details

#camelcase(str) ⇒ Object



78
79
80
# File 'lib/require_reloader/helper.rb', line 78

def camelcase(str)
  str.split("_").map{|token| token.capitalize }.join("")
end

#full_qualified_name(gem_name) ⇒ Object



73
74
75
76
# File 'lib/require_reloader/helper.rb', line 73

def full_qualified_name(gem_name)
  return nil unless gem_name
  gem_name.split("-").map{|token| camelcase(token)}.join("::")
end

#module_defined?(full_name) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/require_reloader/helper.rb', line 62

def module_defined?(full_name)
  !!safe_constantize(full_name)
end

#remove_gem_module_if_defined(gem_name) ⇒ Object



53
54
55
56
# File 'lib/require_reloader/helper.rb', line 53

def remove_gem_module_if_defined(gem_name)
  mod_name = full_qualified_name(gem_name)
  remove_module_if_defined(mod_name)
end

#remove_module(full_name) ⇒ Object



66
67
68
69
70
71
# File 'lib/require_reloader/helper.rb', line 66

def remove_module(full_name)
  module_namespace = deconstantize(full_name)
  module_name = demodulize(full_name)
  parent_module = module_namespace == "" ? Object : constantize(module_namespace)
  parent_module.send(:remove_const, module_name)
end

#remove_module_if_defined(mod_name) ⇒ Object



58
59
60
# File 'lib/require_reloader/helper.rb', line 58

def remove_module_if_defined(mod_name)
  remove_module(mod_name) if module_defined?(mod_name)
end

#to_prepare(&block) ⇒ Object



82
83
84
85
86
87
88
# File 'lib/require_reloader/helper.rb', line 82

def to_prepare(&block)
  if Rails::VERSION::MAJOR == 5
    ActiveSupport::Reloader.to_prepare(&block)
  else
    ActionDispatch::Callbacks.to_prepare(&block)
  end
end