本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7604153
建立时间:2006年5月29日




[Ruby on Rails]在Ruby On Rail中使用memory方式的SQLite数据库
软件技术

lhwork 发表于 2007/2/8 10:17:31

ROR做Unit Test的速度有些让人失望,使用内存数据库能够大幅提高Unit Test的速度,提高开发效率,今天刚刚配上了SQLite3,下面作一个简要攻略。   假设你已经有一个rails的工程了,并且已经用SQLite3生成了一个development模式的数据库db/eplanner_development.db。   1.       安装SQLite-ruby 运行: gem install sqlite3-ruby 选择mswin32安装 2.       测试SQLite-ruby     require 'sqlite3'     db = SQLite3::Database.new( "test.db" )   3.       修改database.yml #   gem install sqlite3-ruby development:   adapter: sqlite3   database: db/eplanner_development.db # In-memory SQLite 3 database.  Useful for tests. test:   adapter: sqlite3   database: ":memory:" 4.       修改environment.rb 把 # config.active_record.schema_format = :ruby         中的注释去掉 5.       运行rake db_schema_dump 生成schema.rb 6.       修改environment.rb,把下面代码加到environment.rb的结尾 def in_memory_database?   ENV["RAILS_ENV"] == "test" and   ActiveRecord::Base.connection.class==ActiveRecord::ConnectionAdapters::SQLiteAdapter and   Rails::Configuration.new.database_configuration['test']['database'] == ':memory:' end   if in_memory_database?   puts "creating sqlite in memory database"   load "#{RAILS_ROOT}/db/schema.rb" # use db agnostic schema by default #  ActiveRecord::Migrator.up('db/migrate') # use migrations end 好了,现在可以享受内存数据库上做单元测试的快感了。在我的机器上,比MySQL上作单元测试速度要快接近一个数量级。   再讲一下如何再SQLite和MYSQL之间如何切换。除了修改database.xml外,还要注释掉 config.active_record.schema_format = :ruby 然后运行rake migrate 这个可能是ror migrate的一个BUG。


阅读全文(3642) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.313 second(s), page refreshed 144762832 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号