RailsでActiveRecordを無効にします。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)
新しいアプリケーションを作成する場合は、-O
を使用してActiveRecordをスキップできます。
Rails new my_app -O
既存のアプリケーションの場合:
1。 Gemfileからデータベースアダプターgemを削除します(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"
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構成がある場合があります。
こんにちは、これはデフォルトのRails 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
Rails 5のアクティブレコードを無効にするためにGoogleを検索するとき、これはまだ最初のヒットであるため、ここに追加します。
For Rails 5
@mechanicalfish answerのすべての手順を実行しますが、行も削除します
Rails.application.config.active_record.belongs_to_required_by_default = true
から
config/initializers/new_framework_defaults.rb
Rails-api gem を使用している場合、--skip-active-record
を実行するときにRails-api new my_api
フラグを使用すると、同様のエラーが発生する可能性があります。現在の修正(gemの新しい修正バージョンがリリースされるまで)は、Rails-api gemを編集して this commit とすることです。 bundle open
を使用し、古いGemfile
を新しい修正されたものに置き換えます。再実行すると、すべての設定が完了します。
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
ターミナルを参照してくださいrakeミドルウェア
新しいアプリを生成する場合
--skip-active-record
オプションを使用して、データベースなしでアプリケーションを生成します。
Rails new myApp --skip-active-record
Railsの以前のバージョンとは対照的に、余分なハイフン「-」に注意してください。
Rails spec/dummy
アプリを使用したプラグイン(またはgem)の場合
Railsアプリが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"