Отключить ActiveRecord для Rails 4
Я хочу отключить ActiveRecord в Rails 4. Я сделал следующее в config/application.rb
require File.expand_path('../boot', __FILE__)
# require 'rails/all' -- commented
require "action_controller/railtie"
require "action_mailer/railtie"
#require "active_resource/railtie" no need
#require "rails/test_unit/railtie" no need
#require "sprockets/railtie" no need
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env)
module MyApp
class Application < Rails::Application
config.app_middleware.delete "ActiveRecord::ConnectionAdapters::ConnectionManagement"
end
end
У меня есть ошибка
/home/alex/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/railtie/configuration.rb:95:in
method_missing: undefined method active_record for #<Rails::Application::Configuration:0x00000002005c38> (NoMethodError)
8 ответов
Если вы создаете новое приложение, вы можете использовать -O
пропустить ActiveRecord:
rails new my_app -O
Для существующих приложений:
1. Удалите гемы адаптера базы данных из вашего Gemfile (mysql2, sqlite3 и т. Д.)
2. Измените свой config/application.rb
Удалить require 'rails/all
line и требуют фреймворки, которые вы хотите использовать, например:
require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
Удалить config.active_record.raise_in_transactional_callbacks = true
от config/application.rb
3. Удалить свой config/database.yml
файл, db/schema.rb
и миграции (если есть)
4. Удалить миграцию test/test_helper.rb
5. Удалите любую конфигурацию ActiveRecord из вашего config/environments
файлы (именно это и вызывает вашу ошибку)
Это все, что вам нужно сделать для пустого приложения Rails. Если вы столкнулись с проблемами, вызванными существующим кодом, трассировка стека должна дать вам достаточную информацию о том, что вам нужно изменить. Например, у вас может быть некоторая конфигурация ActiveRecord в ваших инициализаторах.
Привет это то, что по умолчанию рельсы новый new_app -O дает
require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
внутри вашего config/application.rb
Кроме того, он поставляется без database.yml и NO db / migrate / * и schema.rb
Так как это все еще первый удар при поиске в Google для отключения активной записи для Rails 5, я добавлю это здесь:
Для рельсов 5
Сделайте все шаги в ответе @mechanicalfish, но также удалите строку
Rails.application.config.active_record.belongs_to_required_by_default = true
от
config/initializers/new_framework_defaults.rb
Для тех, кто использует гем rails-api, вы можете столкнуться с подобной ошибкой при использовании --skip-active-record
флаг при выполнении rails-api new my_api
, Текущее исправление (пока не будет выпущена новая исправленная версия драгоценного камня) - отредактировать ваш драгоценный камень rails-api, чтобы получить этот коммит. использование bundle open
и заменить старое Gemfile
с новым исправленным. Перезапусти и у тебя все будет готово.
Для Rails 5:
Если вы создаете новое приложение
использование --skip-active-record
Возможность создания приложения без базы данных:
rails new myApp --skip-active-record
Обратите внимание на дополнительный дефис '-' в отличие от предыдущих версий Rails.
Для отключения ActiveRecord в Rails 4.2 вы можете создать config/initializer /middleware.rb
Rails.application.middleware.tap do |middleware|
middleware.delete ActiveRecord::Migration::CheckPending
middleware.delete ActiveRecord::ConnectionAdapters::ConnectionManagement
middleware.delete ActiveRecord::QueryCache
end
Смотрите терминальные грабли промежуточного ПО
Для плагинов Rails (или гемов) с spec/dummy
приложение
Когда ваше приложение рельсов живет в spec/dummy
и вы запускаете свой сервер из корневого каталога плагина. Вы все еще можете получить следующую ошибку:
Cannot load `Rails.application.database_configuration`: Could not load database configuration. No such file - ["config/database.yml"]
Чтобы избежать этого, удалите require rails/all
внутри файла bin/rails
и требуют фреймворки, которые вы хотите использовать, например:
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
# require "active_record/railtie"
require "action_cable/engine"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
Для Ruby On Rails версии 5.1.x
require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
require "rails/test_unit/railtie"