Saltar al contenido

¿Cómo pasar argumentos a una tarea Rake con entorno en Rails?

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 de Rake::TaskArguments.
  • t es una instancia de Rake::Task.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *