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)