Как включить loadpath/зависимость в rakefile

Я установил Ruby 1.8.7, ci_reporter 1.8.4, тестовый модуль 2.5.4, грабли 10.0.3.

Мой тест A.rb:

require 'includeA.rb'
require 'includeB.rb'
require 'includeC.rb'
require 'includeD.rb'

Begin of the code...
... End of the code

Обычно я выполняю тест со следующим cmd:

ruby -I E:/pathToIncludeA/includeA.rb -I E:/pathToIncludeB/includeB.rb -I E:/pathToIncludeC/includeC.rb -I E:/pathToIncludeD/includeD.rb E:/pathToTestA.rb/testA.rb

И все работает нормально.

Но теперь я использую грабли и таким же образом пытаюсь включить каталог.

Вот мой рейкфайл:

require 'rake/testtask'
require 'rubygems'
gem 'ci_reporter'
gem 'test-unit' 
require 'test/unit' 
require 'ci/reporter/rake/test_unit'  

task :default => [:test]

task :test do
  ruby '-I E:/pathToIncludeA/includeA.rb', '-I E:/pathToIncludeB/includeB.rb, '-I E:/pathToIncludeC/includeC.rb', '-I E:/pathToIncludeD/includeD.rb', E:/pathToTestA.rb/testA.rb
end

Но когда я выполняю следующий cmd:

rake test

У меня есть следующая ошибка:

E:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in 'gem_original_require': no such file to load -- includeA.rb (load error)
from E:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in 'require'
from E:/pathToTestA/testA.rb/

rake aborted!
command failed with status (1): [E:/Ruby/bin/ruby.exe -I pathToIncludeA/...]
Tasks: TOP => default => test

Что я сделал не так? Может ли кто-нибудь помочь мне?


person JeanLouisGangplank    schedule 29.03.2013    source источник
comment
Что происходит, когда вы делаете это: sh "ruby -I E:/pathToIncludeA/... вместо ruby '-I E:/...?   -  person Kashyap    schedule 02.04.2013
comment
Оно работает! Большое спасибо, добавьте свой ответ, я дам вам репутацию!   -  person JeanLouisGangplank    schedule 02.04.2013


Ответы (1)


Попробуй это:

task :test do
  sh "ruby -I E:/pathToIncludeA/includeA.rb -I E:/pathToIncludeB/includeB.rb -I E:/pathToIncludeC/includeC.rb -I E:/pathToIncludeD/includeD.rb E:/pathToTestA.rb/testA.rb"
end

или, если вам нужно/хотите использовать метод ruby внутри задачи, измените свой testA.rb, чтобы загрузить пути к include(A|B|C|D).rb, а затем:

task :test do
  # assuming the Rakefile and the testA.rb are in the same folder.
  ruby "testA.rb"
end

Если ваш набор тестов состоит из нескольких тестовых файлов, таких как testA.rb, testB.rb и т. д., то класс Rake::TestTask может значительно упростить его. Чтобы понять, как его использует проект Sinatra: Sinatra/Rakefile ; Rake::TestTask Документация

person Kashyap    schedule 03.04.2013