【问题标题】:including executable file with gem包括带有 gem 的可执行文件
【发布时间】:2015-11-24 07:46:25
【问题描述】:

有问题的宝石在我的GItHub

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

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

它创建了强大的命令行生成工具,用于使用多个命令构建页面对象和功能文件,这些命令是:

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

我已经编写了一个适当的可执行文件,在安装 gem 时,它应该允许用户从命令行调用 fails &lt;arg&gt; &lt;arg&gt; &lt;arg&gt;...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]

gem 确实是新的和未经打磨的,所以如果有兴趣,任何开源支持都会很棒!

【问题讨论】:

    标签: ruby linux rubygems gemspecs


    【解决方案1】:

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

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

    【讨论】:

    • 好棒。 rubygems.org 上的教程教你如何创建hola gem,这让我很吃惊。我将可执行文件缩减为一个 shebang 和 require 'fails',它运行良好。出于好奇,我是否必须对可执行文件执行任何特殊操作才能在 Windows 上获得相同的功能?
    • @FluffyKittens 我不这么认为(我没有要测试的 Windows 机器)。我看到了你的fails.bat 文件——Rubygems 为可执行文件创建了一个包装文件,用于设置加载路径等。在 Windows 上,我认为它会为你创建一个合适的.bat 文件,所以你不应该需要这样的东西。跨度>
    • 谢谢。我之前手动创建了该 .bat 文件,目的是创建一个可执行文件以将其移动到 bin 中。猜猜这对任何人都不重要。
    猜你喜欢
    • 2019-05-31
    • 2019-08-17
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2019-06-02
    相关资源
    最近更新 更多