2016-06-01 3 views
-1

Я знаю, что это, наверное, очень простой вопрос, но мне очень сложно найти решение. Я работаю над окнами в cmd. Я просто пытаюсь использовать эту команду:Команда запуска в cmd из Ruby

find /i \"chef_server_url\" C:/chef/client.rb 

Я знаю, что команда работает. Он просто возвращает URL-адрес в файле, который я хотел проверить.

Я хочу выполнить это в коде и вернуть результаты в свой код. Но мне сложно форматировать строку, особенно с escape-символами.

Я использую для этого %x[]. Так что в идеале я бы просто сказать
%x[find /i \"chef_server_url\" C:/chef/client.rb]

Но c:/chef/client.rb не форматировать правильно, потому что он думает, что/с и/с не должны быть так

+1

Почему бы вам просто не использовать рубины вместо обстрела? –

+0

@DaveNewton Я бы использовал рубин. Честно говоря, я просто новичок в рубине и просто пытался использовать то, что я знаю, как это сделать ... – joemost45

+0

HOw я бы просто использовал Ruby? – joemost45

ответ

0

Вы пытаетесь получить доступ к URL Chef сервера внутри Шеф-повар? Вы можете использовать Chef::Config[:chef_server_url], но более глубокий вопрос - это то, что вы пытаетесь сделать?

+0

ну, ты только что решил мой вопрос ха-ха .. вот именно то, что я пытался сделать .. Спасибо! – joemost45

0

Короткий ответ на ваш вопрос, что есть больше чем один способ запустить системную команду рубина:

  • Метод Kernel#system принимает обычную строку, так долго, как вы можете получить вашу команду точно представленный в строке, он должен работать. Что-то вроде system 'find /i "chef_server_url" C:/chef/client.rb' должно работать.
  • Backticks будет делать то же самое, что должно выглядеть примерно так: find /i "chef_server_url" c:/chef/client.rb (оберните «backticks», я не уверен, как форматировать на StackExchange).

Я бы сначала рекомендовал получить строковое представление вашей команды, puts его, скопировать вставьте в командное окно. Если он работает, отправьте его через system.

Однако, как и другие, я подозреваю, что есть лучшее решение основной проблемы, которую вы пытаетесь решить.

Я не где-нибудь рядом с компьютером для тестирования Windows, поэтому вам придется поэкспериментировать с ними.

+0

Правильно для Ruby, это неправильно для шеф-повара, где мы используем другой камень для выполнения команды. – coderanger

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