Class: RuboCop::Cop::Captive::Rails::NoDisableDdlTransaction
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Captive::Rails::NoDisableDdlTransaction
- Defined in:
- lib/rubocop/cop/captive/rails/no_disable_ddl_transaction.rb
Overview
Cette migration utilise ‘disable_ddl_transaction!`, ce qui peut rendre le comportement de la migration difficile à prévoir et potentiellement dangereux. Voici pourquoi il est important de l’éviter :
-
**Transactions atomiques :** Les migrations sont généralement exécutées dans une transaction afin de garantir que toutes les modifications d’une migration réussissent ou échouent ensemble. Cela permet de maintenir la cohérence de la base de données.
-
**Erreurs de schéma :** En désactivant la transaction, une erreur survenant lors de l’application des modifications peut laisser la base de données dans un état intermédiaire, ce qui complique le débogage et le retour en arrière.
-
**Verrouillage des tables :** Les opérations DDL sans transaction peuvent provoquer un verrouillage prolongé de la base de données, impactant la performance et l’accessibilité des tables pour d’autres requêtes pendant l’exécution de la migration.
-
**Difficulté de maintenance :** L’absence de transactions peut rendre plus difficile la maintenance de l’application, car il devient plus compliqué de conserver un historique clair des modifications apportées au schéma.
Pour toutes ces raisons, nous devons éviter d’utiliser ‘disable_ddl_transaction!` afin de garantir une gestion sécurisée et fiable des migrations.
Constant Summary collapse
- MSG =
"Avoid using 'disable_ddl_transaction!' in migrations.".freeze
Instance Method Summary collapse
Instance Method Details
#on_send(node) ⇒ Object
35 36 37 38 39 |
# File 'lib/rubocop/cop/captive/rails/no_disable_ddl_transaction.rb', line 35 def on_send(node) return unless disable_ddl_transaction?(node) add_offense(node) end |