我目前正在扩展 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 仿真层是否真的可行。
是否有任何库可以适合我创建功能齐全的 activerecord 内存数据库的用例?
(我已经考虑过使用不同的连接并利用inmemory sqlite db,但对我来说似乎有点过度设计)。