Soy nuevo en Ruby, y he estado intentando aprender Rake, RSpec y Cucumber. Encontré un código que me ayudará a probar mis tareas de Rake, pero estoy teniendo problemas para que funcione. Me dijeron aquí: http://blog.codahale.com/2007/12/20/rake-vs-rspec-fight/ a caer esto:Prueba de una tarea de rake en rspec (y pepino)
def describe_rake_task(task_name, filename, &block)
require "rake"
describe "Rake task #{task_name}" do
attr_reader :task
before(:all) do
@rake = Rake::Application.new
Rake.application = @rake
load filename
@task = Rake::Task[task_name]
end
after(:all) do
Rake.application = nil
end
def invoke!
for action in task.instance_eval { @actions }
instance_eval(&action)
end
end
instance_eval(&block)
end
end
en mi archivo spec_helper.rb.
he logrado tomar el código y ejecutarlo en mis pasos de pepino así:
When /^I run the update_installers task$/ do
@rake = Rake::Application.new
Rake.application = @rake
load "lib/tasks/rakefile.rb"
@task = Rake::Task["update_installers"]
for action in @task.instance_eval { @actions }
instance_eval(&action)
end
instance_eval(&block)
Rake.application = nil
end
pero cuando trato de hacer las cosas que trabajan en rspec, me sale el error siguiente.
ArgumentError en 'Rake tarea install_grapevine debe instalar en el directorio mygrapevine'
número incorrecto de argumentos (1 de 2) /spec/spec_helper.rb: 21:
instance_eval' /spec/spec_helper.rb: 21:in
en bloque en invoke! ' /spec/spec_helper.rb: 20: eneach' /spec/spec_helper.rb: 20:in
invoke! ' /spec/tasks/rakefile_spec.rb:12:in `bloque (2 niveles) en '
Por desgracia, tengo un poco menos de una semana de rubí bajo por la correa, por lo que el material es más metaprogramming mi cabeza. ¿Alguien podría señalarme en la dirección correcta?
mismo sin RSpec: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –