[ruby-on-rails] Rails 4 용 ActiveRecord 비활성화

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 (mysql2, sqlite3 등)에서 데이터베이스 어댑터 gem을 제거합니다.

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 구성이있을 수 있습니다.


답변

안녕하세요 이것은 기본 레일 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 / 마이그레이션 / *schema.rb


답변

Rails 5에 대한 활성 레코드를 비활성화하기 위해 Google을 검색 할 때 이것이 여전히 첫 번째 히트이므로 여기에 추가하겠습니다.

Rails 5의 경우

@mechanicalfish 답변의 모든 단계를 수행하고 줄도 제거하십시오.

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을 수정 하여이 커밋 을 갖도록 하는 것 입니다. 사용 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

터미널 레이크 미들웨어보기


답변

Rails 5 :

새 앱을 생성하는 경우

--skip-active-record옵션을 사용 하여 데이터베이스없이 애플리케이션을 생성 하십시오 .

rails new myApp --skip-active-record

이전 버전의 Rails와 달리 추가 하이픈 ‘-‘를 확인하세요.


답변

spec/dummy앱 이있는 Rails 플러그인 (또는 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"