class Barkest::InstallGenerator
Installs Barkest
modules into an application.
Public Instance Methods
install_modules()
click to toggle source
# File lib/generators/barkest/install_generator.rb, line 14 def install_modules meth = action_name.to_s == '' ? nil : action_name.to_sym installers.each do |inst| sep = '-' + ('=---' * 19) + '=-' tell "#{sep}\nProcessing #{inst.class}\n#{sep}", :bold if meth inst.send(meth) if inst.respond_to?(meth) else inst.public_methods(false).each { |method| inst.send(method) } end end end
Private Instance Methods
find_modules()
click to toggle source
# File lib/generators/barkest/install_generator.rb, line 40 def find_modules ret = [] verbose_module_scan = (ENV['VERBOSE_MODULE_SCAN'].to_s.to_i != 0) # generator is run from root of app directory Gem::Specification.each do |gem| if gem_should_be_checked?(gem.name) puts "Checking for installer in '#{gem.name}' gem." if verbose_module_scan installer = begin # ensure the gem has been loaded. require gem.name # then ensure the install_generator (if any) has been loaded. inst_path = "generators/#{gem.name}/install_generator" begin require inst_path # finally load the class and generate an instance. klass_name = "#{gem.name.camelcase}::InstallGenerator" begin klass = Object.const_get(klass_name) inst = klass.new puts "Generated instance of class '#{klass_name}'." if verbose_module_scan inst rescue NameError puts "Failed to load class '#{klass_name}'." if verbose_module_scan nil end rescue LoadError puts "Failed to load file '#{inst_path}'." if verbose_module_scan nil end rescue LoadError puts "Failed to load gem '#{gem.name}'." if verbose_module_scan nil end ret << installer unless installer.nil? end end ret.sort do |a,b| ka = a.class.name kb = b.class.name # ensure Core installers run first. kac = ka.index('BarkestCore::') == 0 kbc = kb.index('BarkestCore::') == 0 if kac && kbc ka <=> kb elsif kac -1 elsif kbc 1 else ka <=> kb end end ret end
gem_should_be_checked?(gem_name)
click to toggle source
override this to process additional gems.
# File lib/generators/barkest/install_generator.rb, line 32 def gem_should_be_checked?(gem_name) gem_name.index('barkest_') == 0 end
installers()
click to toggle source
# File lib/generators/barkest/install_generator.rb, line 36 def installers @installers ||= find_modules end