使用Ruby调用命令行工具

时间:2014-01-18 22:16:13

标签: c ruby command-line gem extconf.rb

我试图调用的命令行工具基本上将文件转换为另一种格式。

我正在使用这个[教程] [1],但遇到了麻烦。我一直在invalid multibyte char (UTF-8) (SyntaxError)

我只是将我的命令行工具(使用C制作)转储到垃圾箱中,并试图让它工作。有人可以说明我如何才能实现这项工作吗?

2 个答案:

答案 0 :(得分:3)

你得到的错误与UTF-8编码有关,这是ruby-2.x中的默认编码所以我假设你使用的是1.8或1.9,你应该考虑升级。

尝试将以下行添加到脚本的顶部:

#!/bin/env ruby
# encoding: utf-8

请告知我们是否有效并查看this thread for more

编辑:现在我明白了你想做什么。查看位于bin/目录的示例文件here。您可以将可执行文件放到另一个目录,例如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

好的,现在试试。这也适用于多个文件,例如

prog file1.doc file2.doc ...

答案 1 :(得分:1)

请阅读the documentthe document,了解如何使 C 软件兼容 ruby​​

一些注意事项:

  1. 将所有文件放在宝石的适当文件夹中;
  2. 使宝石extconf兼容;
  3. 不要将已编译的二进制文件放入 GitHub 源(在某些限制情况下,可以存储 Windows OS 的预编译二进制文件);
  4. 如果您不编写 OpenSource 项目,请不要将其发布到 GitHub ,而不是使用 BitBucket 和localhost (非 Rubygems.org )存储gem。