Как остановить рецепт шеф-повара, когда он уже готов - PullRequest
4 голосов
/ 30 марта 2012

Я сделал рецепт для vagrant, который устанавливает phpunit, однако он перестает работать, когда я использую vagrant halt, а затем vagrant up.

execute "discover phpunit" do
  command "pear channel-discover pear.phpunit.de"
  action :run
end

execute "config phpunit" do
  command "pear config-set auto_discover 1"
  action :run
end

execute "install phpunit" do
  command "pear install pear.phpunit.de/PHPUnit"
  action :run
end

Я получаю:

[default] [Thu, 29 Mar 2012 14:39:57 -0700] ERROR: execute[discover phpunit] (phpunit::default line 39) has had an error
[Thu, 29 Mar 2012 14:39:57 -0700] ERROR: execute[discover phpunit] (/tmp/vagrant-chef-1/chef-solo-1/phpunit/recipes/default.rb:39:in `from_file') had an error:
execute[discover phpunit] (phpunit::default line 39) had an error: Chef::Exceptions::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of pear channel-discover pear.phpunit.de ----
STDOUT: Channel "pear.phpunit.de" is already initialized

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Похоже, что происходит, если этот скрипт запускается каждый раз, когда vagrant up выполняется.

Вы, вероятно, хотите что-то вроде этого:

execute "discover phpunit" do
  command "pear channel-discover pear.phpunit.de"
  action :run
  not_if "which phpunit"
end

Просто убедитесь, что phpunit в вас $PATH

0 голосов
/ 19 июня 2013

Я бы, вероятно, установил not_if равным

not_if { File.exists?('/path/to/phpunit')

, а не полагался на его обнаружение в $ PATH.

...