Module | Rails::Generator::Lookup::ClassMethods |
In: |
vendor/rails/railties/lib/rails_generator/lookup.rb
|
Add a source to the end of the list.
# File vendor/rails/railties/lib/rails_generator/lookup.rb, line 68 68: def append_sources(*args) 69: sources.concat(args.flatten) 70: invalidate_cache! 71: end
Lookup knows how to find generators’ Specs from a list of Sources. Searches the sources, in order, for the first matching name.
# File vendor/rails/railties/lib/rails_generator/lookup.rb, line 120 120: def lookup(generator_name) 121: @found ||= {} 122: generator_name = generator_name.to_s.downcase 123: @found[generator_name] ||= cache.find { |spec| spec.name == generator_name } 124: unless @found[generator_name] 125: chars = generator_name.scan(/./).map{|c|"#{c}.*?"} 126: rx = /^#{chars}$/ 127: gns = cache.select{|spec| spec.name =~ rx } 128: @found[generator_name] ||= gns.first if gns.length == 1 129: raise GeneratorError, "Pattern '#{generator_name}' matches more than one generator: #{gns.map{|sp|sp.name}.join(', ')}" if gns.length > 1 130: end 131: @found[generator_name] or raise GeneratorError, "Couldn't find '#{generator_name}' generator" 132: end
Add a source to the beginning of the list.
# File vendor/rails/railties/lib/rails_generator/lookup.rb, line 74 74: def prepend_sources(*args) 75: write_inheritable_array(:sources, args.flatten + sources) 76: invalidate_cache! 77: end
Reset the source list.
# File vendor/rails/railties/lib/rails_generator/lookup.rb, line 80 80: def reset_sources 81: write_inheritable_attribute(:sources, []) 82: invalidate_cache! 83: end
Use application generators (app, ?).
# File vendor/rails/railties/lib/rails_generator/lookup.rb, line 86 86: def use_application_sources! 87: reset_sources 88: sources << PathSource.new(:builtin, "#{File.dirname(__FILE__)}/generators/applications") 89: end
Use component generators (model, controller, etc).
# File vendor/rails/railties/lib/rails_generator/lookup.rb, line 102 102: def use_component_sources! 103: reset_sources 104: if defined? ::RAILS_ROOT 105: sources << PathSource.new(:lib, "#{::RAILS_ROOT}/lib/generators") 106: sources << PathSource.new(:vendor, "#{::RAILS_ROOT}/vendor/generators") 107: sources << PathSource.new(:plugins, "#{::RAILS_ROOT}/vendor/plugins/*/**/generators") 108: sources << PathSource.new(:plugins, "#{::RAILS_ROOT}/vendor/plugins/*/**/rails_generators") 109: end 110: sources << PathSource.new(:user, "#{Dir.user_home}/.rails/generators") 111: if Object.const_defined?(:Gem) 112: sources << GemGeneratorSource.new 113: sources << GemPathSource.new 114: end 115: sources << PathSource.new(:builtin, "#{File.dirname(__FILE__)}/generators/components") 116: end