Hacemos una revisión completa cada tutoriales de nuestro espacio con la meta de enseñarte en todo momento información veraz y certera.
Solución:
Solo para dar seguimiento a este viejo tema; esto es lo que creo que un Rakefile actual (desde hace mucho tiempo) debería hacer allí. Es una versión mejorada y corregida de errores de la respuesta ganadora actual (hgimenez):
desc "Testing environment and variables"
task :hello, [:message] => :environment do |t, args|
args.with_defaults(:message => "Thanks for logging on")
puts "Hello #User.first.name. #args.message" # Q&A above had a typo here : #:message
end
Así es como lo invoca (http://guides.rubyonrails.org/v4.2/command_line.html#rake):
rake "hello[World]"
Para múltiples argumentos, simplemente agregue sus palabras clave en el array de la declaración de tarea (task :hello, [:a,:b,:c]...
), y pásalos separados por comas:
rake "hello[Earth,Mars,Sun,Pluto]"
Nota: la cantidad de argumentos no se verifica, por lo que se omite el planeta impar 🙂
TLDR;
task :t, [args] => [deps]
Respuesta original
Cuando pasa argumentos a tareas de rake, puede requerir el entorno usando la opción :needs. Por ejemplo:
desc "Testing environment and variables"
task :hello, :message, :needs => :environment do |t, args|
args.with_defaults(:message => "Thanks for logging on")
puts "Hello #User.first.name. #args.message"
end
Actualizado por el comentario de @Peiniau a continuación
En cuanto a Rieles > 3.1
task :t, arg, :needs => [deps] # deprecated
Por favor use
task :t, [args] => [deps]
Solo para completar, aquí el ejemplo de los documentos mencionados anteriormente:
task :name, [:first_name, :last_name] => [:pre_name] do |t, args|
args.with_defaults(:first_name => "John", :last_name => "Dough")
puts "First name is #args.first_name"
puts "Last name is #args.last_name"
end
Notas:
- Puede omitir el
#with_defaults
llamar, obviamente. - Tienes que usar un
Array
por sus argumentos, aunque sólo haya uno. - Los requisitos previos no necesitan ser un
Array
. args
es una instancia deRake::TaskArguments
.t
es una instancia deRake::Task
.