2015-03-19 3 views
1

Пожалуйста, помогите мне вызвать файл .bat из ruby-скрипта. Я попробовал следующее. Мой файл test.rb приведен ниже:Вызвать .bat-файл из ruby-скрипта

batch "run-script" do 
    cwd 'D:\\jenkins\jobs\HybrisJob\workspace' 
    code <<-EOH 
    `hybrisserver.bat` 
    EOH 
    action :run 
end 

но он не работает.

[2015-03-19T14:01:16+05:30] FATAL: Mixlib::ShellOut::ShellCommandFailed: batch[run-script] ((chef-apply cookbook)::(chef-apply recipe) line 1) had an error: 
Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1' 

ответ

0

Не попробуйте использовать код рубина в пакетном ресурсе, это запустить cmd.exe, который не имеет понятия о том или обратных кавычках команды системы.

обратитесь к документации here

batch "run-script" do 
    cwd 'D:\\jenkins\\jobs\\HybrisJob\\workspace' 
    code "hybrisserver.bat" 
    action :run 
end 

избежать всех \ в атрибуте УХО (или использовать / ресурс будет заботиться об изменении его системы сепаратора) Там нет необходимости использовать синтаксис Heredoc для одной строки без аргументов или других строк сценария, проверяющих возврат.

+0

так ресурс cwd недоступен для рецепта шеф-повара? Я попробовал эту 'cwd 'D: // jenkins/jobs/HybrisJob/workspace'' system ('hybrisserver.bat') и получить ошибку 'FATAL: NoMethodError: никакого ресурса или метода с именем' cwd 'для 'Chef :: Recipe '' – javaUser

+0

cwd является атрибутом ресурса партии, чтобы сообщить ему, где следует запустить cmd.exe. нет ресурса cwd. См. Мой ответ, это исправленный ресурс партии из вашего вопроса. Выполнение рубиновых команд в рецепте не рекомендуется – Tensibai

+0

ThanksTensibai, это сработало! – javaUser

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