我目前正在从Redmine 1.4问题跟踪器中扩展一些功能(它使用Rails 2.3.14和Ruby 1.8.7)。
对于我当前的用例,我真的不喜欢它的一些事情是封装业务逻辑(角色,工作流)的一些类是基于数据库而不是基于代码 - 我们的客户不应该能够改变角色和没有我们干预的工作流程,虽然我可以用我想要的角色和工作流预加载一组预先编制的数据库数据,但我仍然认为这对于可维护性来说不是最好的解决方案。
我想做的是这样的事情:
class Person < SomeInMemoryActiveRecordBaseClass
end
p = Person.new(:name => "Somebody)
p.save
然后我希望能够在任何Person对象和Person类上调用ActiveRecord方法,即使它背后没有真正的数据库。
这可能看起来很愚蠢(如果我从头开始创建项目,我根本就不使用基于AR的对象,但由于我正在构建已经存在的东西,这不是一个选项),但我需要在内存中使用的对象在很多地方使用,它们应该是基于AR的;改变他们在任何地方的使用真的很费时间。
我见过一些项目,比如nulldb,它们是面向测试的,不是面向生产的,并且它们没有实现所有方法。除此之外,AR接口似乎非常面向sql,我不知道是否真的可以让sql-emulation层“正确”。
是否有任何库可以满足我创建功能齐全的activerecord内存数据库的用例?
(我已经考虑过使用不同的连接并利用内存的sqlite数据库,但对我来说似乎有点过分了。)