Отключить 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)

Ответ 1

Если вы создаете новое приложение, вы можете использовать -O для пропуска ActiveRecord:

rails new my_app -O

Для существующих приложений:

1. Удалите из адаптера Gemfile из базы данных (mysql2, sqlite3 и т.д.)

2. Измените config/application.rb

Удалите строку require 'rails/all и потребуйте фреймворки, которые вы хотите использовать, например:

require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"

3. Удалите файл config/database.yml, db/schema.rb и миграции (если есть)

4. Удалить проверку миграции test/test_helper.rb

5. Удалите любую конфигурацию ActiveRecord из ваших файлов config/environments (это вызывает вашу ошибку)

Это все, что вам нужно сделать для пустого приложения Rails. Если вы столкнулись с проблемами, вызванными вашим существующим кодом, трассировка стека должна предоставить вам достаточную информацию о том, что вам нужно изменить. Например, у вас могут быть некоторые настройки ActiveRecord в ваших инициализаторах.

Ответ 2

Привет, это то, что по умолчанию рельсы new 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

Ответ 3

Так как это все еще первый хит при поиске в Google для отключения активной записи для Rails 5, я добавлю это здесь:

Для Rails 5

Выполняйте все шаги в @mechanicalfish, но также удалите строку

Rails.application.config.active_record.belongs_to_required_by_default = true

из

config/initializers/new_framework_defaults.rb

Ответ 4

Для тех, кто использует rails-api gem, вы можете столкнуться с подобной ошибкой при использовании флага --skip-active-record при выполнении rails-api new my_api. Текущее исправление (до тех пор, пока не будет выпущена новая исправленная версия gem), необходимо отредактировать ваш rails-api gem, чтобы this commit. Используйте bundle open и замените старый Gemfile на новый исправленный. Повторите, и вы все должны быть установлены.

Ответ 5

Для отключения ActiveRecord в Rails 4.2 вы можете создать config/initializers/middleware.rb

Rails.application.middleware.tap do |middleware|
  middleware.delete ActiveRecord::Migration::CheckPending
  middleware.delete ActiveRecord::ConnectionAdapters::ConnectionManagement
  middleware.delete ActiveRecord::QueryCache
end

Обратитесь к терминалу промежуточного программного обеспечения rake

Ответ 6

Для Rails 5:

Если вы создаете новое приложение

Использовать параметр --skip-active-record для создания приложения без базы данных:

rails new myApp --skip-active-record

Обратите внимание на дополнительный дефис '-' в отличие от предыдущих версий Rails.

Ответ 7

Для 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"