[英]How to handle non-gem dependencies in Rails
我有一个愚蠢的问题。 如果是,抱歉。
我最近进行了一个需要PhantomJS才能使其Cucumber场景正确运行的Rails项目。 不幸的是,该应用程序没有说它依赖于PhantomJS,因此,当方案失败时,它看起来好像一切都坏了,还不清楚为什么。
使错误停止的唯一方法是执行brew install phantomjs
。 显然,这不是宝石,安装PhantomJS宝石也无济于事。
在Rails项目中处理非gem依赖关系的正确方法是什么?
我不相信有一个标准的方法。
PhantomJS是一个独立的应用程序,需要这样安装。 如果您的应用程序依赖于redis或postgreSQL,它将与安装redis或postgreSQL相同。
您正确使用自制软件进行安装,这使更新删除变得更加容易。
这不是一件小事。 AFAIK,没有内置实用程序来声明对宝石/红宝石以外其他东西的依赖。 Ruby是一种解释性语言,因此可以在多种环境中运行; 在此级别上管理依赖项将是一项相当复杂的任务。
许多人使用capistrano或puppet等部署工具来处理此问题,以确保运行该应用程序的环境足够,并在需要时安装所需的依赖项。 通常,您将创建一个rake任务来执行此操作,然后通过capistrano调用它,或者让用户手动调用它。
如果要警告人们有关依赖项的问题,一种选择是使用初始化程序在应用程序启动时检查环境中是否已安装必需的依赖项,如果没有,则发出警告(或完全关闭应用程序)。
另一种选择是简单地将依赖性检查作为一系列测试来执行 。 因此,如果这些测试失败,则可以提供有关缺失内容的详细说明。
总而言之,您至少要做的就是在文档中列出环境依赖项 。 确保此文件位于主文档文件的顶部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.