method
invoke
v7.1.3.2 -
Show latest stable
- Class:
Rails::Generators
invoke(namespace, args = ARGV, config = {})public
Receives a namespace, arguments, and the behavior to invoke the generator. It’s used as the default entry point for generate, destroy, and update commands.
# File railties/lib/rails/generators.rb, line 257
def invoke(namespace, args = ARGV, config = {})
names = namespace.to_s.split(":")
if klass = find_by_namespace(names.pop, names.any? && names.join(":"))
args << "--help" if args.empty? && klass.arguments.any?(&:required?)
klass.start(args, config)
run_after_generate_callback if config[:behavior] == :invoke
else
options = sorted_groups.flat_map(&:last)
error = Command::CorrectableNameError.new("Could not find generator '#{namespace}'.", namespace, options)
puts <<~MSG
#{error.detailed_message}
Run `bin/rails generate --help` for more options.
MSG
end
end
def add_generated_file(file) # :nodoc:
(@@generated_files ||= []) << file
file
end
private
def print_list(base, namespaces) # :doc:
namespaces = namespaces.reject { |n| hidden_namespaces.include?(n) }
super
end
# Try fallbacks for the given base.
def invoke_fallbacks_for(name, base)
return nil unless base && fallbacks[base.to_sym]
invoked_fallbacks = []
Array(fallbacks[base.to_sym]).each do |fallback|
next if invoked_fallbacks.include?(fallback)
invoked_fallbacks << fallback
klass = find_by_namespace(name, fallback)
return klass if klass
end
nil
end
def command_type # :doc:
@command_type ||= "generator"
end
def lookup_paths # :doc:
@lookup_paths ||= %( rails/generators generators )
end
def file_lookup_paths # :doc:
@file_lookup_paths ||= [ "{#{lookup_paths.join(',')}}", "**", "*_generator.rb" ]
end
def run_after_generate_callback
if defined?(@@generated_files) && !@@generated_files.empty?
@after_generate_callbacks.each do |callback|
callback.call(@@generated_files)
end
@@generated_files = []
end
end
end Related methods
- Class methods
- add_generated_file
- after_generate_callbacks
- aliases
- api_only!
- command_type
- configure!
- fallbacks
- file_lookup_paths
- find_by_namespace
- help
- hidden_namespaces
- hide_namespace
- hide_namespaces
- invoke
- invoke_fallbacks_for
- lookup_paths
- options
- print_generators
- print_list
- public_namespaces
- run_after_generate_callback
- sorted_groups
- templates_path