Вызов инструмента командной строки с использованием 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.

Некоторые заметки:

  1. Поместите все файлы в соответствующие папки для драгоценного камня;
  2. Сделать драгоценный камень extconfсовместимый;
  3. Не помещайте скомпилированные двоичные файлы в исходный кодGitHub (в некоторых ограниченных случаях могут быть сохранены предварительно скомпилированные двоичные файлы дляОС Windows);
  4. Если вы не пишете проект OpenSource, непубликуйте его в GitHub, вместо этого используйте BitBucket и localhost (не Rubygems.org) для хранения гема.
Другие вопросы по тегам