| 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