Отключить 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"
Другие вопросы по тегам