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说如果这是一个问题你可以把钥匙和钥匙重新捆绑起来.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...