web-dev-qa-db-fra.com

Désactiver ActiveRecord for Rails 4

Je veux désactiver ActiveRecord dans Rails 4. J'ai fait ce qui suit dans 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

Par j'ai une erreur de 

/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)
104
アレックス

Si vous créez une nouvelle application, vous pouvez utiliser -O pour ignorer ActiveRecord:

Rails new my_app -O

Pour les applications existantes:

1. Retirez les gemmes de l'adaptateur de base de données de votre Gemfile (mysql2, sqlite3, etc.)

2. Modifiez votre config/application.rb

Supprimez la ligne require 'Rails/all et exigez les frameworks que vous souhaitez utiliser, par exemple:

require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "Rails/test_unit/railtie"

Supprimer config.active_record.raise_in_transactional_callbacks = true de config/application.rb

3. Supprimez votre fichier config/database.yml, db/schema.rb et vos migrations (le cas échéant)

4. Supprimer la vérification de la migration dans test/test_helper.rb

5. Supprimez toute configuration ActiveRecord de vos fichiers config/environments (c’est la cause de votre erreur)

C'est tout ce que vous devez faire pour une application Rails vide. Si vous rencontrez des problèmes causés par votre code existant, la trace de pile devrait vous fournir suffisamment d'informations sur ce que vous devez modifier. Vous pouvez par exemple avoir une configuration ActiveRecord dans vos initialiseurs.

250
mechanicalfish

Bonjour c'est ce que donne par défaut 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"

dans votre config/application.rb

De plus, il vient sans database.yml et NO db/migrate/* et schema.rb

14
jasmo2

Comme il s'agit toujours du premier succès lors de la recherche sur Google de la désactivation de l'enregistrement actif pour Rails 5, j'ajouterai ceci ici:

Pour Rails 5

Répondez à toutes les étapes de @mechanicalfish, mais supprimez également la ligne 

Rails.application.config.active_record.belongs_to_required_by_default = true

de 

config/initializers/new_framework_defaults.rb
5
mmeyers

Pour ceux qui utilisent Rails-api gem , vous pouvez rencontrer une erreur similaire lorsque vous utilisez l'indicateur --skip-active-record lorsque vous utilisez Rails-api new my_api. Le correctif actuel (jusqu'à ce qu'une nouvelle version corrigée de la gem soit publiée) consiste à éditer votre Rails-api gem pour avoir this commit . Utilisez bundle open et remplacez l’ancienne Gemfile par la nouvelle corrigée. Réexécutez et vous devriez être tous ensemble.

5
Alex Moore-Niemi

Pour désactiver ActiveRecord dans Rails 4.2, vous pouvez créer 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

Voir le terminal rake middleware

4
Vinicius Luiz

Pour Rails 5:

Si vous générez une nouvelle application

Utilisez l'option --skip-active-record pour générer une application sans base de données:

Rails new myApp --skip-active-record

Notez le tiret supplémentaire '-' par opposition aux versions précédentes de Rails.

4
Crimbo

Pour les plugins Rails (ou gems) avec une application spec/dummy

Lorsque votre application Rails réside dans spec/dummy et que vous démarrez votre serveur à partir du répertoire racine du plug-in. Vous pourriez encore avoir l'erreur suivante:

Cannot load `Rails.application.database_configuration`: Could not load database configuration. No such file - ["config/database.yml"] 

Pour éviter cela, supprimez require Rails/all dans le fichier bin/Rails et indiquez les frameworks que vous souhaitez utiliser, par exemple: 

# 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"
0
rya brody