2014-10-25 2 views
0

Я пытаюсь создать сборку Travis для моего проекта Ruby. В тестах используется rspec. Они проходят локально с помощью рек задачи по умолчанию, но не на Travis построить с ошибкой:Travis Build не может найти Diff :: LCS :: SpecHelper для Rspec

/home/travis/.../vendor/bundle/ruby/2.0.0/gems/diff-lcs-1.2.5/spec/diff_spec.rb:6:in `block in ': uninitialized constant Diff::LCS::SpecHelper (NameError)

Моим приложение не использует Diff-ЛВП непосредственно; похоже, что-то внутренне требуется rspec.

Full build log here

Full Source code here.

Вещи я пытался до сих пор:

  • проверки зависимостей - Трэвиса пакетирования использует ту же версию, как мой локальный ящик для всех зависимостей
  • Добавить „требуют„Diff-ЛВП““ в Rakefile и мой внутренний спец-помощник - не помогло
  • Google - не смог найти ничего подобного

Travis Config:

language: ruby 
rvm: 
    - 2.0.0 
    - 2.1.0 
cache: bundler 

Gemfile.lock:

rspec (2.14.1) 
    rspec-core (~> 2.14.0) 
    rspec-expectations (~> 2.14.0) 
    rspec-mocks (~> 2.14.0) 
rspec-core (2.14.8) 
rspec-expectations (2.14.5) 
    diff-lcs (>= 1.1.3, < 2.0) 

.rspec

-c 
--default_path . 
--pattern **/*_spec*.rb 
--require spec_helper 
+0

Gem не должен загружать файлы из папки спецификаций, например 'diff-lcs-1.2.5/spec/diff_spec.rb: 6' что там происходит? – phoet

+0

@phoet - Я добавил свой файл .rspec - вы думаете, что мой путь или образец испортили его? – Lynn

+0

Определенно шаблон. –

ответ

1

Указав шаблон как **/*_spec*.rb, вы рассказываете RSpec искать спецификации файлов в все каталогов внутри вашего проекта.

У вас также есть Bundler, настроенный для установки драгоценных камней в каталог вашего проекта, поэтому RSpec просматривает все ваши драгоценные камни и пытается запустить свои спецификации, а также ваши собственные.

Лучшим примером для использования будет то, что spec/**/*_spec.rb (при условии, что все ваши спецификации находятся в каталоге spec). Это ограничивает поиск RSpec этим путем.

+0

Это имеет смысл. Я предполагаю, что локальная конфигурация моего дистрибутива отличается от стандартного значения Travis, поскольку я не вижу эту проблему локально. Есть ли способ указать два каталога для шаблона? У меня есть спецификации в spec/**, а также плагины/foo/spec/**, поэтому я использовал этот шаблон изначально. Я могу сделать тест задачи рейка отдельно, если это необходимо; просто интересно, есть ли способ их комбинировать. – Lynn

+0

Да, [вы можете иметь несколько шаблонов, разделенных запятыми] (https://relishapp.com/rspec/rspec-core/docs/command-line/pattern-option#the-'--pattern'-flag-can- be-used-to-pass-in-multiple-patterns, -сепаратированные по запятым) –

+0

Спасибо - я пропустил это в документации. Это исправило это! – Lynn

Смежные вопросы