Самый простой способ (и я думаю, что он менее подвержен ошибкам) состоит в том, чтобы иметь задачу вроде:
task :test do
system('cd test; bundle exec rake test')
end
Другой, более сложный способ - включить все «подзадачи» в корневой каталог.Rakefile добавляет обязательное условие к каждому из них, которое изменит текущий каталог, например:
task :change_dir do
puts 'changing dir'
Dir.chdir('test')
end
namespace :sub do
load 'test/Rakefile'
end
Rake::Task.tasks.select{|t| t.name.start_with?('sub:')}.each do |task|
task.prerequisites.insert(0, 'change_dir')
end
Я не уверен, как это будет работать с упаковщиком.
ПоследнийЯ бы порекомендовал вам взглянуть на структуру проекта, которую создает команда bundle gem
.Сейчас я использую его для всех своих драгоценных камней, и я верю, что использование его позволит полностью устранить вашу проблему:)