微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 宝石测试的策略,以确保宝石与Rails 3.x和4.0一起使用?

我已经看到了一些虚拟Rails应用程序的示例(为了测试,所以他们通常在测试或规范目录下)用于与Rails 3.x和Rails 4一起使用的评估宝石,但是它们似乎是黑客和功能不全面有点预期,因为它是一个被剥夺的弗兰肯斯坦怪物,试图与各种版本的Rails 3以及Rails 4兼容.

我已经提到试图进行这种测试的项目(截至2013年3月底),比如less-rails和ember-rails,但是这种使用各种版本的Rails进行测试的方法看起来不是很干净,尝试调试非标准Rails应用程序,特别是在Rails的beta版本中是非常不寻常的.

一个更清洁的方法来测试,这将是一个更好的方法,允许您有一个完整的Rails应用程序的每个版本的Rails来测试,通过一些魔法是不是很难设置或维护,不需要非标准路径黑客在地方等

使用各种版本的Rails(包括至少最新的Rails 3.1.x,3.2.x和4.0.0.beta1)测试宝石的可用策略是什么?每个的优点和缺点是什么?

解决方法

轨道核心列表中的 related thread的几个选项:

选项1:评估宝石和单Rails虚拟应用程序

肯·柯林斯提到使用评估和一个Rails“虚拟”应用程序:

I test minitest-spec-rails against 3.0,3.1,3,2 and 4.0 using a mix
of appraisal and dummy_app that minimally configures itself depending
which rails version it is testing against. Some links:

07001
07002

less-rails,ember-railshigh_voltage等使​​用类似的技术.

我在restful_json(v3.3.0)中使用了类似于high_voltage的设置,但是使用4.0.0-beta1创建的完整的Rails应用程序,我最低限度修改也可以使用Rails 3.1.x / 3.2.x.

更新:可能希望看到permitters更多的例子.

优点:相当简单可以根据命令行等各种Rails版本进行测试.可以非常少的Rails应用程序配置,或者可以使用完整的Rails应用程序,具有微小的差异.

缺点:对于多个Rails版本,仍然使用相同的Rails应用程序,因此有些条件和不必要的配置. (某些文件不适用于其他版本的Rails等的可能问题,但似乎不是一个大问题.)

选项2:Rails版本作为环境变量,具有单个Gemfile,单Rails虚拟应用程序,依靠travis-ci在多个版本中进行测试

史蒂夫·克拉夫尼克(Steve Klabnik)提到了一个解决方案,它使用一个完整的Rails应用程序(即使在“虚拟”目录下),也没有使用评估宝石,依靠travis-ci来测试:

I’ve been meaning to discuss this topic more,as I’ve been doing it
for a bunch of my gems lately. I have two that do this:

Draper: 07009

LocaleSetter: 070010

Basically,I embed an entire Rails application into the gem,and then
run it against multiple versions of Rails on travis via env vars.

优点:简单.没有依赖评估宝石(不是这是一个问题,但可能更容易维护).

缺点:仍然重复使用相同的Rails应用程序为多个Rails版本从我可以告诉.除非使用travis-ci或以干净的gemset开头的东西(例如,如果在命令行中运行),那么当前没有区别的gemsets,所以较新的gem可能与旧的Rails等一起使用,但Steve说如果这是一个问题你可以把钥匙和钥匙重新捆绑起来.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐