1

我有一个可能是愚蠢的问题。如果是,对不起。

我最近接手了一个 Rails 项目,该项目需要 PhantomJS 才能使其 Cucumber 场景正常运行。不幸的是,该应用程序并没有说它依赖于 PhantomJS,所以当场景失败时,它看起来就像坏了一样,而且还不清楚为什么。

使错误停止的唯一方法是做brew install phantomjs. 显然,这不是一个 gem,安装 PhantomJS gem 也没有做任何事情。

在 Rails 项目中处理非 gem 依赖项的正确方法是什么?

4

2 回答 2

1

我不相信有一个标准的方法。

PhantomJS 是一个独立的应用程序,需要单独安装。如果您的应用程序依赖于它,它与安装 redis 或 postgreSQL 相同。

不过,您使用自制软件安装是对的,这使得更新删除更容易。

于 2013-03-27T18:55:10.897 回答
1

这不是一件小事。AFAIK,没有内置实用程序来声明对宝石/红宝石以外的其他事物的依赖关系。Ruby 是一种解释型语言,因此可以在各种环境中运行;在这个级别管理依赖项将是一项相当复杂的任务。

许多人使用capistranopuppet部署工具来处理此问题,以确保运行应用程序的环境足够,并在需要时安装所需的依赖项。通常,您会创建一个 rake 任务来执行此操作,并通过 capistrano 调用它,或者让用户手动调用它。

如果你想警告人们依赖关系,一个选项是使用初始化程序来检查应用程序启动时所需的依赖项是否安装在环境中,如果没有则发出警告(或完全关闭应用程序)。

另一种选择只是将依赖项检查作为一系列测试来执行。因此,如果这些测试失败,您可以提供有关缺失内容的详细说明。

总而言之,您至少可以在文档中列出环境依赖项。确保这是在您的主要文档文件之上。

于 2013-03-27T19:17:34.333 回答