Code utilisé pour connecter Rails 3 à PostgreSQL 10

J'ai dû me connecter à PostgreSQL 10 et le tester avec Rails 3.0.1, j'ai donc décidé d'ajouter un initialiseur.

config/initializers/backport_pg_10_support_to_rails_3.rb

if Rails.env.test?
  module ActiveRecord
    class Base
      class << self
        def establish_connection(*arg)
        end
      end
    end
  end
  require 'active_record/connection_adapters/postgresql_adapter'
  module ActiveRecord
    module ConnectionAdapters
      class PostgreSQLAdapter < AbstractAdapter
        # Resets the sequence of a table's primary key to the maximum value.
        def reset_pk_sequence!(table, pk = nil, sequence = nil)
          unless pk and sequence
            default_pk, default_sequence = pk_and_sequence_for(table)
            pk ||= default_pk
            sequence ||= default_sequence
          end
          if pk
            if sequence
              quoted_sequence = quote_column_name(sequence)
              if ActiveRecord::Base.connection.select_value('SELECT version()').include?('PostgreSQL 10')
                # language=sql
                sql =<<-EOS
                  SELECT setval('#{quoted_sequence}', (SELECT GREATEST(MAX(#{quote_column_name pk})+(SELECT seqincrement FROM pg_sequence WHERE seqrelid = '#{quoted_sequence}'::regclass), (SELECT seqmin FROM pg_sequence WHERE seqrelid = '#{quoted_sequence}'::regclass)) FROM #{quote_table_name(table)}), false)
                EOS
              else
                # language=sql
                sql =<<-EOS
                  SELECT setval('#{quoted_sequence}', (SELECT GREATEST(MAX(#{quote_column_name pk})+(SELECT increment_by FROM #{quoted_sequence}), (SELECT min_value FROM #{quoted_sequence})) FROM #{quote_table_name(table)}), false)
                EOS
              end
            else
              @logger.warn "#{table} has primary key #{pk} with no default sequence" if @logger
            end
          end
        end
      end
    end
  end
end

J'ai mis require'active_record / connection_adapters / postgresql_adapter' et j'ai écrasé def reset_pk_sequence! (Table, pk = nil, sequence = nil), mais cela seul donne une erreur indiquant que ʻestablish_connection n'existe pas. , J'ai écrit ʻestablish_connection avant require.

reset_pk_sequence! est essentiellement une copie de https://github.com/rails/rails/blob/3-0-stable/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, et la partie modifiée est la partie création SQL. est.

Recommended Posts

Code utilisé pour connecter Rails 3 à PostgreSQL 10
J'ai essayé de résumer les méthodes utilisées
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé d'organiser la session en Rails
[Java / PostgreSQL] Connectez l'application WEB à la base de données
Une revue du code utilisé par les rails débutants
[Rails] Je ne sais pas comment utiliser le modèle ...
Connectez-vous de Java à PostgreSQL
[Rails] [bootstrap] Je souhaite modifier la taille de la police de manière réactive
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
Publier le code de coupon utilisé sur le point de terminaison spécifié
Basculer dynamiquement la base de données à laquelle se connecter
J'ai essayé d'expliquer la méthode
[Rails] J'ai essayé de supprimer l'application
L'histoire que je voulais développer Zip
Connectez-vous au serveur Rails avec iPhone
Rails DB PostgreSQL a été remplacé par MySQL
Tri des données Décroissant, croissant / Rails
J'ai essayé d'implémenter la fonction de prévisualisation d'image avec Rails / jQuery
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
J'ai essayé de comprendre comment la méthode des rails "link_to" est définie
J'ai utilisé le modèle Mediator pour exprimer un puzzle de traversée de rivière.
[Rails] J'ai découvert les fichiers de migration! (Ajout d'une colonne au tableau)
J'ai essayé de migrer le traitement vers VS Code
[Rails] J'étais accro aux paramètres nginx lors de l'utilisation d'Action Cable.
[Rails] Comment utiliser la méthode de la carte
Je voulais ajouter @VisibleForTesting à la méthode
J'ai utilisé Docker pour solidifier le modèle à développer avec Spring Boot.
J'étais accro à la méthode du rouleau
J'ai essayé d'implémenter le modèle Iterator
[Circle CI] J'étais accro au test automatique de Circle CI (rails + mysql) [Memo]
J'étais accro au test Spring-Batch
J'ai essayé de résumer l'API Stream
Je suis allé au Java Women's Club # 1
Je veux introduire un comité avec des rails sans devenir trop sale
[Rails] Comment appliquer le CSS utilisé dans l'application principale avec Administrer
Pourquoi le code était-il pénible à lire?
[Rails6] Comment connecter la fonction d'affichage générée par Scaffold avec la fonction utilisateur générée par devise
03. J'ai envoyé une demande de Spring Boot à l'API de recherche de code postal
[Rails / ActiveRecord] Je souhaite valider la valeur avant la conversion du type (_before_type_cast)
Je l'ai utilisé sans connaître la cartographie O / R des rails, donc je l'ai vérifié.
J'étais accro à ne pas pouvoir me connecter à AWS-S3 à partir du conteneur Docker
[Rails] Comment utiliser la méthode d'assistance utilisée dans l'application principale avec Administrer
[Rails] Comment décider de la destination par "voies ferrées"
Bouton [Rails] pour revenir en haut de la page
[Rails] Quand j'utilise form_with, l'écran se fige! ??
Mémorandum pour nettoyer le code Ruby
La route vers la japonaisisation des rails conçoit des messages d'erreur
[Rails] rails nouveau pour créer une base de données avec PostgreSQL
Je veux var_dump le contenu de l'intention
[Ruby] Code pour afficher le jour
[API] J'ai essayé d'utiliser l'API de recherche par code postal