Вызов инструмента командной строки с использованием Ruby
Инструмент командной строки, который я пытаюсь вызвать, в основном конвертирует файл в другой формат.
Я использую этот [учебник][1], но у меня проблемы. Я продолжаю получать invalid multibyte char (UTF-8) (SyntaxError)
Я просто сбрасываю свой инструмент командной строки (созданный с использованием C) в корзину и пытаюсь заставить его работать. Может ли кто-нибудь пролить свет на то, как я могу заставить это работать?
2 ответа
Ошибка, которую вы получаете, связана с кодировкой UTF-8, которая является кодировкой по умолчанию в ruby-2.x, поэтому я предполагаю, что вы используете 1.8 или 1.9, и вам следует подумать об обновлении.
Попробуйте добавить следующие строки в начало вашего скрипта:
#!/bin/env ruby
# encoding: utf-8
Дайте нам знать, если это работает, и посмотрите на эту тему для получения дополнительной информации.
РЕДАКТИРОВАТЬ: Теперь я понял, что вы хотите сделать. Посмотрите здесь для примера файла, который находится на bin/
каталог. Вы можете поместить свой исполняемый файл в другой каталог, например data/
например, и позвонить через ruby:
#!/usr/bin/env ruby
prog = File.expand_path('../data/myprog', __FILE__)
ARGV.each do|a|
system("#{prog} #{a}") # will return 'true' if run successfully
end
Хорошо, попробуй сейчас. Это должно работать с несколькими файлами также, как
прога file1.doc file2.doc ...
Пожалуйста, прочитайте документ и документ о том, как сделать C soft-совместимым с ruby.
Некоторые заметки:
- Поместите все файлы в соответствующие папки для драгоценного камня;
- Сделать драгоценный камень
extconf
совместимый; - Не помещайте скомпилированные двоичные файлы в исходный кодGitHub (в некоторых ограниченных случаях могут быть сохранены предварительно скомпилированные двоичные файлы дляОС Windows);
- Если вы не пишете проект OpenSource, непубликуйте его в GitHub, вместо этого используйте BitBucket и localhost (не Rubygems.org) для хранения гема.