`
dongbin
  • 浏览: 244604 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

在Ruby On Rail中使用memory方式SQLite数据库攻略

    博客分类:
  • Ruby
阅读更多

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

分享到:
评论

相关推荐

    ruby on rail.pdf

    《Ruby on Rails:构建高效Web应用的神器》 Ruby是一种高度灵活、面向对象的编程语言,它的设计理念强调了代码的可读性和简洁性。由Yukihiro Matsumoto(马特松,也被称作Matz)在1995年创建,Ruby受到了Perl、...

    Ruby on Rail 基础知识 一张纸

    在Ruby on Rails中,方法是执行特定任务的基本单元。以下列举了一些常用的方法: 1. **字符串处理方法**: - `capitalize!`: 将字符串的第一个字母转换为大写。 - `center`: 将字符串居中。 - `chomp!`: 删除字符串...

    [Ruby on Rails] 02. [Mac] 安装Ruby on Rail 6.x

    [Ruby_on_Rails][中文]_02._[Mac]_安裝Ruby_on_Rail_6.x

    Ruby On Rail最新开发软件版本

    这两本书要是能看透了,我想已经能够领会ruby的奥妙了,在这里在介绍一本终极书籍,我感觉这本很玄妙,所以还没开始看,打算把上诉两本看通了得在看这本,如果有牛人的话可以一起看,因为语言都是相通的你有别的...

    [Ruby on Rails] 03. [Windows] 安装Ruby on Rail 6.x

    [Ruby_on_Rails][中文]_03._[Windows]_安裝Ruby_on_Rail_6.x

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...

    rail on ruby

    - **Gem**: Rails 项目中使用的第三方库。 - **流行 Gem**: - Devise: 用户认证。 - CanCanCan: 授权。 - ActiveAdmin: 后台管理界面。 - Paperclip 或 CarrierWave: 文件上传。 - RSpec 和 Capybara: 测试框架...

    Ruby on Rails Tutorial

    在过去的几年中,《Ruby on Rails Tutorial》这本书被视为介绍使用 Rails 进行 Web 开发的先驱者。 在这个全球互联的世界中,计算机编程和 Web 应用程序开发都在迅猛发展,我很期待能为中国的开发者提供 Ruby on ...

    sample_app_RoR:Ruby on Rail教程后的学习项目

    您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...Ruby on Rails教程样本应用程序参考实施这是(第6版)中的示例应用程序的...

    Ruby-Devise一个基于Warden的Rails灵活身份验证解决方案

    Ruby-Devise是Ruby on Rails框架中的一个强大且灵活的身份验证解决方案,它为开发者提供了处理用户注册、登录、密码重置等常见身份验证需求的工具。这个库是基于Warden,一个通用的身份验证库,允许Devise在Rails...

    ejemplo_rails_crud:Crud Para Probar Ruby on Rail

    【ejemplo_rails_crud:Crud Para Probar Ruby on Rails】是一个基于Ruby on Rails框架的简单CRUD(创建、读取、更新、删除)应用程序示例。这个项目旨在帮助开发者了解如何在Rails环境下构建基本的数据操作功能。让...

    Ajax on rail

    关于ruby on rail的ajax,英文版

    react-devise, Ruby on Rails 设计验证服务器的ReactJS前端.zip

    react-devise, Ruby on Rails 设计验证服务器的ReactJS前端 ATTENTON: 目前,这必须是实验性软件,而不是在生产中使用。设计简介设计长期以来一直是 Rails 应用的认证库。 只需将设计放入你的Rails 应用程序,进行...

    RoR-Sample:Ruby On Rail 示例

    **Ruby on Rails(RoR)概述** Ruby on Rails,简称RoR,是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,用于快速开发高效、可维护的Web应用。RoR的核心理念是DRY(Don't ...

    Ruby-此模块将直接在注册表中更改本地用户的密码

    在描述中提到的“此模块将直接在注册表中更改本地用户的密码”,这暗示了一个特定的Ruby模块可能被设计用来操作Windows操作系统的注册表,这是一个存储系统设置和配置信息的关键数据库。注册表中包含有关用户账户和...

    bitnami-docker-rails:Bitnami Ruby on Rails Docker组成开发环境

    bitnami-docker-rails:Bitnami Ruby on Rails Docker组成开发环境

    Monopoly:CSC 667867 的学期项目。使用 Ruby On Rail 实现的大富翁游戏

    自述 此自述文件通常会记录... Ruby版 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列、缓存服务器、搜索引擎等) 部署说明 … 如果您不打算运行rake doc:app请随意使用不同的标记语言。

    Crosswind action on rail vehicles Wind tunnel experimental analyses

    在本研究中,虽然未详细提及CFD的应用,但可以推测,除了风洞实验之外,CFD也可能被用于验证实验结果,或者作为设计过程的一部分来优化铁路车辆的气动性能。CFD模拟可以提供更全面的流场数据,帮助工程师理解复杂...

Global site tag (gtag.js) - Google Analytics