包括gem的可执行文件

时间:2015-08-29 23:01:23

标签: ruby linux rubygems gemspecs

有问题的宝石在我的GItHub

我也在Linux上,特别是Ubuntu。我正在尝试使gem兼容Linux / OSX用户,在Windows用户正常工作之后关注* nix系统。

所以我写了一个名为fails的宝石。它可用于构建一个测试自动化套件,其中包含围绕用其他语言编写的Web应用程序的Ruby / Cucumber / Watir-webdriver堆栈,以及其他框架。

它使用以下命令创建强大的命令行生成工具,用于构建页面对象和要素文件:

fails g page <page object name>
fails f <feature file name>
fails n <new automated test suite name>

我编写了一个适当的可执行文件,在安装gem时,应允许用户从命令行调用fails <arg> <arg> <arg>...etc。但是,在构建gem并安装它时,我尝试通过调用fails g page google生成页面对象,但是我收到错误:

daniel@d:~/Downloads/fails_gem$ fails
/usr/local/bin/fails:23:in `load': /var/lib/gems/2.1.0/gems/fails-0.0.3/bin/fails:4: syntax error, unexpected tCONSTANT, expecting end-of-input (SyntaxError)
fails.rb ARGV[0] ARGV[1] ARGV[2] ARGV[3] ARGV[4] A...
                     ^
    from /usr/local/bin/fails:23:in `<main>'

这个错误告诉我我的可执行文件有问题,但我不太明白。我需要能够使用最多九个命令行参数调用fails.rb。我的可执行文件如下所示:

#!/usr/bin/env ruby

require 'fails'
fails.rb ARGV[0] ARGV[1] ARGV[2] ARGV[3] ARGV[4] ARGV[5] ARGV[6] ARGV[7] ARGV[8] ARGV[9]

宝石真的是新的和未经抛光的,所以如果有兴趣,任何开源支持都会很棒!

1 个答案:

答案 0 :(得分:1)

您似乎对可执行文件bin/fails的内容感到有点困惑。这应该是纯Ruby。看起来您正在尝试将某种Ruby和shell语法与行fails.rb ARGV[0] ...结合使用,这不会起作用。

在这种情况下,我认为你需要的是require 'fails'行。这应加载文件lib/fails.rb(因为Rubygems已将lib添加到您的加载路径中),然后内容或ARGV仍将在该文件中可用。