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

sa1*_*125 45 ruby-on-rails-3

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

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

Zab*_*bba 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"
Run Code Online (Sandbox Code Playgroud)

另请参阅在Rails 3中删除ActiveRecord 并查看Active Model railscast

Rails 3.2.x:

您还需要在application.rb中删除/注释掉这一行

config.active_record.whitelist_attributes = true
Run Code Online (Sandbox Code Playgroud)

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

config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5
Run Code Online (Sandbox Code Playgroud)

Rails 2.x:

config/environment.rb添加(或去掉注释)的线

config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
Run Code Online (Sandbox Code Playgroud)

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

  • 在Rails 3.1和3.2中,您还需要遵循Rod的回答中的建议,即删除config/environments文件中对`config.activerecord`的所有引用. (2认同)

小智 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
Run Code Online (Sandbox Code Playgroud)

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

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