Rails 3 - как мне вообще избежать базы данных?

Я пытаюсь использовать рельсы 3 без бэкэнда db, но он все еще настаивает на необходимости создания "sqlite3" gem, когда я пытаюсь получить доступ к странице, и выдает ошибку no such file to load -- sqlite3, хотя никакого кода в приложении не требуется sqlite, за исключением того, что я оставил базу данных .yml с настройкой по умолчанию для sqlite3, так как удаление содержимого вызывало другие ошибки. Любая идея, как я могу использовать рельсы без какой-либо базы данных и избегать указанных ошибок? спасибо.

(также, я знаком с Sinatra - просто предпочитаю рельсы для этого проекта).

Ответ 1

Рельсы 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"

Также см. Удалить ActiveRecord в 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 не будет использовать эти фреймворки. (Обратите внимание на почти невидимое -=!)

Ответ 2

Кроме того, в Rails 3 удалите любые ссылки на active_record в

конфигурации/среда/development.rb

config/environment/test.rb и

config/environment/production.rb, например

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

а также удаление требуют "rails/all" и добавления строк запроса в комментарии 21 (см. выше).

если вы не используете базу данных (это работает с Rails 3.1.1)