1. ホーム
  2. ruby-on-rails

[解決済み] Rails 4のActiveRecordを無効にする

2022-09-13 04:21:02

質問

Rails 4でActiveRecordを無効にしたいです。私は以下のように 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)

どのように解決するのですか?

新規にアプリケーションを作成する場合は -O を使ってActiveRecordをスキップすることができます。

rails new my_app -O

既存のアプリケーションの場合。

1. Gemfile からデータベースアダプタの gems を削除する (mysql2, sqlite3, etc.).

2. を変更する config/application.rb

取り外す require 'rails/all の行を削除し、フレームワーク(その中でも 使用可能 の中で rails バージョンは、リストが異なりますが、ちょうどコピーしないでください)あなたが使用したい、例えば。

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 ファイルからActiveRecordの設定を削除してください(これがエラーの原因です)。

空のRailsアプリに必要なことはこれだけです。既存のコードに起因する問題に遭遇した場合、スタックトレースによって、何を変更する必要があるかについての十分な情報が得られるはずです。たとえば、初期化ファイルにActiveRecordの設定があるかもしれません。