Rails 3 - 如何完全避免使用数据库?

时间:2010-10-17 17:12:03

标签: ruby-on-rails-3

我正在尝试使用rails 3而没有任何数据库后端,但是当我尝试访问某个页面时它仍然坚持要求'sqlite3'gem,并抛出错误no such file to load -- sqlite3,即使没有代码应用程序需要sqlite,除了我使用sqlite3的默认设置离开database.yml,因为删除内容引发了其他错误。知道如何在没有任何数据库的情况下使用rails并避免出现错误吗?感谢。

(另外,我对Sinatra很熟悉 - 只喜欢这个项目的rails。)

2 个答案:

答案 0 :(得分:99)

Rails 3:

application.rb中,移除require 'rails/all'行,然后添加以下行:

require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"
require "sprockets/railtie"

另见Remove ActiveRecord in Rails 3 并查看Active Model railscast

Rails 3.2.x:

您还需要在application.rb

中删除/注释掉这一行
config.active_record.whitelist_attributes = true

从development.rb中删除/注释这两行

config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5

Rails 2.x:

config/environment.rb添加(或取消注释)该行

config.frameworks -= [ :active_record, :active_resource, :action_mailer ]

这将导致Rails不使用这些框架。 (注意几乎不可见的-=!)

答案 1 :(得分:10)

此外,在Rails 3中,删除

中对active_record的任何引用

配置/环境/ development.rb

config / environments / test.rb和

config / environments / production.rb,例如

config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5

以及删除需要“rails / all”并在注释21(上面)中添加require行。

如果您没有使用数据库(这适用于Rails 3.1.1)