如何在Rails中处理非gem依赖项

时间:2013-03-27 18:36:22

标签: ruby-on-rails

我有什么可能是一个愚蠢的问题。如果是,抱歉。

我最近接受了一个需要PhantomJS的Rails项目,以使其Cucumber场景正常运行。不幸的是,该应用程序并不是说它依赖于PhantomJS,所以当场景失败时,它看起来就像是事情被打破了,而且它并不是很清楚原因。

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

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

2 个答案:

答案 0 :(得分:1)

我不相信有一种标准方式。

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

虽然使用自制程序安装是正确的,但更新更容易。

答案 1 :(得分:1)

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

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

如果您想警告人们有关依赖关系,可以选择使用初始化程序来检查应用程序启动是否在环境中安装了所需的依赖项,并发出警告(或完全关闭如果不是这样的话。

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

总而言之,您可以做的最少只是列出文档中的环境依赖关系。确保它位于主文档文件的顶部。