首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存数据库中的Rails

内存数据库中的Rails
EN

Stack Overflow用户
提问于 2009-10-22 02:00:00
回答 3查看 9.3K关注 0票数 12

是否可以将rails设置为使用带有内存的mysql作为DB引擎?我从来不重启mysql,并且经常重建数据库,我宁愿它快一点。拥有用于运行测试的内存数据库也会很好。

编辑:我应该指定这只用于开发/测试,而不是生产。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-22 05:33:11

我不明白为什么您不能;您选择的存储引擎是一个MySQL实现细节。您所需要做的就是在迁移的create_table声明中设置:options => "ENGINE=MEMORY"

当然,我也不明白您为什么要这样做--尤其是在生产中。内存引擎的MySQL文档是full of caveats,就像固定长度字段分配一样,与丢失一切的风险相比,您意识到的速度增益是微不足道的。如果你的应用程序不需要持久化,为什么不完全跳过ActiveRecord,在Memcached之上分层你的模型呢?

票数 7
EN

Stack Overflow用户

发布于 2009-10-22 02:11:00

我使用内存数据库中的sqlite3进行测试。它通常比基于文件的速度快一点,但不会那么快,除非你有大量的测试数据。

要设置它,您的database.yml将如下所示:

代码语言:javascript
复制
test:
adapter: sqlite3
database: ":memory:"

您还必须将模式加载到测试助手中的内存数据库中,如下所示:

代码语言:javascript
复制
config = YAML::load(IO.read(File.dirname(__FILE__) + "/../config/database.yml"))
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/../log/debug.log")
ActiveRecord::Base.establish_connection(config["test"])
load(File.dirname(__FILE__) + "/../db/schema.rb")
票数 3
EN

Stack Overflow用户

发布于 2011-03-20 00:42:23

出于测试目的,考虑使用https://github.com/mvz/memory_test_fix插件。它使用起来就像更新database.yml和运行一样简单

代码语言:javascript
复制
rails plugin install git://github.com/mvz/memory_test_fix.git

你也可以尝试安装git,但是它来自不同的memory_test_fix分支,并且不支持Rails3。

gem帮助我将测试用例的执行时间从25秒减少到19秒。另一方面,它在数据库模式初始化上引入了2秒的开销(我没有那么多开销)。因此,在小的测试集上,这不值得麻烦。

Jason Stewart的答案基本上是相同的。我使用它而不是插件,因为它更容易与Spork插件相结合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1602494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档