ruby-on-rails-3 – 如何使用RSpec针对真实应用开发Rails3引擎?
关于引擎开发和使用虚拟应用程序进行测试已经写了很多.
在我们的例子中,我们正在开发一个不是独立实体的引擎,但它依赖于真正的Rails 3应用程序.我们仍然希望此代码存在于引擎中,而不是成为应用程序的一部分,因为引擎的工作是从具有自己的表和模型映射的遗留系统导入数据,并且我们希望最终再次删除它. 旧遗留表和新模式之间的数据映射很复杂,我们希望TDD(使用rspec)引擎. >我跟随Jose Valim’s book “Crafting Rails Appliations”并使用enginex gem. 思考? 解决方法
所以,我想出了一些事情并且会回答我自己的问题,现在我已经开始工作了.
为简单起见,我将把我宝石的名称称为“my_gem”和“MyGem”: 在engine.rb文件中,我添加了: require 'my_gem' require 'rails' 这种固定错误的类型: my_gem/lib/my_gem/engine.rb:2: uninitialized constant MyGem::Rails (NameError) 在spec_helper.rb中,我添加了正确的顶部: require 'bundler/setup' require 'my_gem' 这是为了确保Bundler立即初始化,而不是通过应用程序.这样我可以在这里加载MyGem,它将被挂钩到应用程序的初始化序列中.这修复了引擎模型类的NameError异常. 这留下了Gemfile使用的问题.问题是我的应用程序有自己的gemfile,而gem /引擎需要在自己的Gemfile中使用它独立的依赖项. 我找不到Bundler的任何API来传递两个Gemfile,实际上Bundler似乎是围绕一个权威Gemfile的假设而构建的.所以我在spec_helper中生成一个.我拿了应用程序的gemfile并附加gemspec,它指向gem的GemSpec格式依赖. (顺便说一句,关于gemspec的暗示从Jose Valim的书中遗漏了). 我不知道在测试启动期间是否有比连接文件更好的方法.如果您知道其中一个,请回复. 有用的资源是: > Clarifying the Roles of the .gemspec and Gemfile by Yehuda Katz (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |