POP Article V2.0 设为主页
收藏本站
首 页交流论坛留 言
您现在的位置:首 页 >> 数据库编程 >> 编程技术 >> 查看文章
在Ruby On Rail中使用memory方式的SQLite数据库
作者:lhwork  来源:http://www.w3china.org/blog/  时间:2008-4-1  【 字体: 】 〖 双击滚屏 〗

RORUnit Test的速度有些让人失望,使用内存数据库能够大幅提高Unit Test的速度,提高开发效率,今天刚刚配上了SQLite3,下面作一个简要攻略。

假设你已经有一个rails的工程了,并且已经用SQLite3生成了一个development模式的数据库db/eplanner_development.db

1.       安装SQLite-ruby

运行: gem install sqlite3-ruby

选择mswin32安装

2.       测试SQLiteruby

  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上作单元测试速度要快接近一个数量级。

再讲一下如何再SQLiteMYSQL之间如何切换。除了修改database.xml外,还要注释掉

config.active_record.schema_format = :ruby

然后运行rake migrate

这个可能是ror migrate的一个BUG

浏览次数:   【 打 印 】【 关 闭
上一篇:移植Sqlite到Vxworks
下一篇:使用 python 开发 Web Service
 论坛登陆
用户名:
密  码:
验证码: 
Cookie 选项:
正常登陆 隐身登陆
   
没有注册?
 文章搜索
 推荐文章
 酷站推荐
 热门文章
 网站统计
关于我们 | 网站地图 | 联系我们 | 网站历史 | 友情链接 | TOP
Copyright© 2006 Sqlite中文社区  程序开发: mistletoe  站长: 林轩 陈文成