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"