Rails 4のActiveRecordを無効にする


113

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)

4
だけを使用rails new ... -Oしてactiverecordを無効にしないのはなぜですか?
Yevgeniy Anfilofyev 2013

app_middleware.deleteが必要ですか、問題を引き起こしている可能性さえありますか?
house9 2013

既存のRails 4/5/6アプリの場合、この回答に従ってアクティブレコードを無効にすることができます
Alter Lagos

回答:


261

新しいアプリケーションを作成している場合は、を使用-OしてActiveRecordをスキップできます。

rails new my_app -O

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

1. Gemfileからデータベースアダプターgem(mysql2、sqlite3など)を削除します。

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. config/environmentsファイルからActiveRecord構成を削除します(これがエラーの原因です)

空のRailsアプリに必要なのはこれだけです。既存のコードが原因で問題が発生した場合、スタックトレースを使用すると、変更が必要な点に関する十分な情報が得られます。たとえば、初期化子にいくつかのActiveRecord構成があるとします。


2
これらの変更に加えて、(RSpecを使用して)spec_helpers.rbから数行を削除する必要がありました:フィクスチャとトランザクションについて。私はactive_modelも使用していたので、ここのrequireリストでactive_recordをactive_modelに置き換えました:stackoverflow.com/questions/19078044/…–
arnab

3
「rails / all」の代わりに必要な、利用可能なRailsフレームワークのリストはどこにありますか?
emilesilvis

18
require 'rails/all'含まれているすべてのリストはここにあります
nates

3
1 rails new my_app -Oか月前にアプリケーションを作成しました。今、私はアクティブなレコードを取り戻したいです。今追加する必要があるファイル/宝石/構成は何ですか?
Jak

1
からも削除する必要config.active_record.raise_in_transactional_callbacks = trueがありましたconfig/application.rb
Bセブン

15

こんにちはこれは新しい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.ymldb / migrate / *schema.rbはありません。


4
およびレール5の場合<=追加require "action_cable/engine"
rails_id

7

Rails 5のアクティブレコードを無効にするためにGoogleを検索するとき、これはまだ最初のヒットなので、ここに追加します。

Rails 5の場合

@mechanicalfish回答のすべての手順を実行しますが、行も削除します

Rails.application.config.active_record.belongs_to_required_by_default = true

から

config/initializers/new_framework_defaults.rb

5

使用する方のために、レール-APIの宝石を使用しているときには、同様のエラーが発生することがあり--skip-active-recordやったときにフラグをrails-api new my_api。現在の修正(gemの新しい修正バージョンがリリースされるまで)は、rails-api gemを編集して、このcommitを実行することです。bundle open古いものGemfileを使用して、新しいものに交換してください。再実行すると、すべての準備が整います。


4

Rails 4.2でActiveRecordを無効にするには、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

Terminal Rakeミドルウェアを見る


4

Rails 5の場合:

新しいアプリを生成する場合

--skip-active-recordオプションを使用して、データベースなしでアプリケーションを生成します。

rails new myApp --skip-active-record

以前のバージョンのRailsとは対照的に、余分なハイフン「-」に注意してください。


1
アクティブレコードをスキップせずにプロジェクトをすでに作成している場合は、config / environments /内のすべてのactive_record参照をコメント化してください。 。それは私のためにそれをしました。
ファンリカルド

1
bin / setup =>#systemのこの行にもコメントを付けてください!'bin / rails db:setup'
Juan Ricardo

1

spec/dummyアプリ付きのRailsプラグイン(またはgem)の場合

Railsアプリが存在spec/dummyし、plugin-rootディレクトリからサーバーを起動したとき。次のエラーが発生する場合があります。

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"

-1

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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.