2015-08-27 2 views
0

У меня есть несколько модульных тестов шефа, что я могу запустить с помощью команды: chef exec rspecВыполнение теста шефа из rakefile

Однако я пытаюсь запустить их из TeamCity и я использую rakefile. Когда я пытаюсь выполнить rakefile, требуется строка «chefspec» в тестовом файле, вызывает ошибку "cannot load such file -- chefspec (LoadError)"

Я знаю, что установлен chefspec. Я новичок в Ruby, chefspec, rspec. Я знаю, что есть упоминание о файле gemspec, и я попытался создать его в каталоге, где я могу выполнить команду chef exec rspec для выполнения теста. Однако, когда я пытаюсь запустить bundle install, я получаю сообщение об ошибке Could not locate Gemfile or .bundle/ directory. Есть ли местоположение gemfile по умолчанию при установке ruby? На данный момент я довольно утерян.

C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in требуется ': не может загрузить такой файл - chefspec (LoadErr или) из C: /Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb: 54: в require' from D:/../spec/octopus_tentacle_spec.rb:1:in' из C: /Ruby22/lib/ruby/gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb: 1327: in load' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1327:in блок в load_ spec_files ' от C:/Ruby22/lib/ruby ​​/ gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb: 1325: in each' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1325:in load_spec_file s ' от C:/Ruby22/lib/ruby /gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:102:in setup' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:88:in run ' от C: /Ruby22/lib/ruby/gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb: 73: in run' from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:41:in invoke ' от C:/Ruby22/lib /ruby/gems/2.2.0/gems/rspec-core-3.3.2/exe/rspec:4:in <top (required)>' from C:/Ruby22/bin/rspec:23:in нагрузка» из C:/Ruby22/бен/RSpec: 23: в <main>'

ответ

0

gemspec файлы обычно используются, когда вы создаете камень Ruby, и содержат метаданные о создаваемом Gem.

При использовании bundle install в каталоге требуется Gemfile. Gemfile работает как файл манифеста для драгоценных камней, необходимых для проекта в каталоге. Возможно, что chef exec ищет этот файл и будет работать только с драгоценными камнями, указанными здесь.

Попробуйте создать Gemfile с содержанием

source 'https://rubygems.org' 

gem 'rspec' 
gem 'chefspec' 

вы должны перечислить другие драгоценные камни, которые вы используете в файле. , а затем запустить bundle install

+0

Спасибо за ответ, Хасан. Я создал файл с именем 'chefspec.gemfile' и использовал указанный вами контент. Однако, когда я запускаю 'bundle install' из местоположения файла, я все равно получаю ошибку' Could not locate Gemfile или .bundle/directory' – user3464189

+0

Имя файла важно здесь, я считаю, по умолчанию это должен быть 'Gemfile'. если вы предпочитаете хранить его как 'chefspec.gemfile', тогда вам нужно будет передать местоположение файла при запуске' bundle install'. В ОС на основе unix вы предоставите переменную среды для объединения, выполнив «BUNDLE_GEMFILE = путь// gemfile bundle install'. Не уверен, что то же самое на окнах. Также обратите внимание, что вам всегда нужно определить 'BUNDLE_GEMFILE' для команд, необходимых для gemfile. –