118

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

8 に答える 8

272

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

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

空の Rails アプリに対して行う必要があるのはこれだけです。既存のコードが原因で問題が発生した場合は、スタック トレースから、何を変更する必要があるかについて十分な情報が得られるはずです。たとえば、イニシャライザにいくつかの ActiveRecord 構成があるとします。

于 2013-09-29T13:55:40.110 に答える
15

こんにちは、これはデフォルトの 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がなく、 db/migrate/*とschema.rbがありません

于 2016-03-13T05:27:29.537 に答える
5

rails-api gemを使用している場合は--skip-active-record、実行時にフラグを使用すると同様のエラーが発生する可能性がありますrails-api new my_api。現在の修正 (gem の新しい修正バージョンがリリースされるまで) は、rails-api gem を編集して、この commitを持つようにすることです。古いものを新しい修正済みのものbundle openと交換して使用します。Gemfile再実行すると、すべて設定されているはずです。

于 2014-09-29T15:20:43.470 に答える