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)
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.
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
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
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.
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
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.
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"