Tengo dos tareas Rake bajo el mismo espacio de nombres como siguientes:rastrillo variable de tarea
namespace :db do
task :first_task => :environment do
server_name='myserver'
connect_to(server_name)
end
task :second_task => :environment do
server_name='myserver'
do_something_with(server_name)
end
end
Como se ve, ambas tareas están bajo el mismo espacio de nombres y ambas tareas utilizan server_name='myserver'
constante variable.
Realmente parece feo definir la variable server_name
dos veces bajo el mismo espacio de nombres, ¿cómo puedo tener un lugar que defina esta variable para que ambas tareas puedan usarlo?
No, no deberías hacer eso. La razón es que no sabes a dónde va ese ivar. Yo tampoco. Una tarea de rake se declara utilizando un bloque, no una clase, y, por lo tanto, el contexto del ivar no está claro. – meandre
@meandre ¿Cuál es el problema con el uso de una variable de instancia de esta manera? ¿Puedes demostrar dónde podría salir mal? Tienes una mejor sugerencia? Consulte la sección "Variables de instancia en tareas" en http://daneharrigan.com/2010/06/rake-tasks-102/ para una discusión más detallada. –
@meandre En realidad, las variables de instancia definidas en la forma en que muestro se evalúan en el contexto de 'Rake.application.in_namespace (name, & block)' (consulte https://github.com/jimweirich/rake/blob/v10.3.2 /lib/rake/dsl_definition.rb#L140). No estoy seguro de cuál es tu preocupación. –