lib/polyamorous.rb in polyamorous-1.3.3 vs lib/polyamorous.rb in polyamorous-2.3.0

- old
+ new

@@ -1,56 +1,29 @@ -require 'polyamorous/version' - if defined?(::ActiveRecord) module Polyamorous - if defined?(Arel::InnerJoin) - InnerJoin = Arel::InnerJoin - OuterJoin = Arel::OuterJoin - else - InnerJoin = Arel::Nodes::InnerJoin - OuterJoin = Arel::Nodes::OuterJoin - end + InnerJoin = Arel::Nodes::InnerJoin + OuterJoin = Arel::Nodes::OuterJoin - if defined?(::ActiveRecord::Associations::JoinDependency) - JoinDependency = ::ActiveRecord::Associations::JoinDependency - JoinAssociation = ::ActiveRecord::Associations::JoinDependency::JoinAssociation - JoinBase = ::ActiveRecord::Associations::JoinDependency::JoinBase - else - JoinDependency = ::ActiveRecord::Associations::ClassMethods::JoinDependency - JoinAssociation = ::ActiveRecord::Associations::ClassMethods::JoinDependency::JoinAssociation - JoinBase = ::ActiveRecord::Associations::ClassMethods::JoinDependency::JoinBase - end + JoinDependency = ::ActiveRecord::Associations::JoinDependency + JoinAssociation = ::ActiveRecord::Associations::JoinDependency::JoinAssociation end require 'polyamorous/tree_node' require 'polyamorous/join' require 'polyamorous/swapping_reflection_class' ar_version = ::ActiveRecord::VERSION::STRING[0,3] - ar_version = '3_and_4.0' if ar_version < '4.1' - - method, ruby_version = - if RUBY_VERSION >= '2.0' && ar_version >= '4.1' - # Ruby 2; we can use `prepend` to patch Active Record cleanly. - [:prepend, '2'] - else - # Ruby 1.9; we must use `alias_method` to patch Active Record. - [:include, '1.9'] - end - + ar_version = ::ActiveRecord::VERSION::STRING[0,5] if ar_version >= "5.2" && ::ActiveRecord.version < ::Gem::Version.new("6.0") + ar_version = "5.2.1" if ::ActiveRecord::VERSION::STRING >= "5.2.1" && ::ActiveRecord.version < ::Gem::Version.new("6.0") %w(join_association join_dependency).each do |file| - require "polyamorous/activerecord_#{ar_version}_ruby_#{ruby_version}/#{file}" + require "polyamorous/activerecord_#{ar_version}_ruby_2/#{file}" end - Polyamorous::JoinDependency.send(method, Polyamorous::JoinDependencyExtensions) - if method == :prepend - Polyamorous::JoinDependency.singleton_class - .send(:prepend, Polyamorous::JoinDependencyExtensions::ClassMethods) + if ar_version >= "5.2.0" + require "polyamorous/activerecord_#{ar_version}_ruby_2/reflection.rb" + ::ActiveRecord::Reflection::AbstractReflection.send(:prepend, Polyamorous::ReflectionExtensions) end - Polyamorous::JoinAssociation.send(method, Polyamorous::JoinAssociationExtensions) - Polyamorous::JoinBase.class_eval do - if method_defined?(:active_record) - alias_method :base_klass, :active_record - end - end + Polyamorous::JoinDependency.send(:prepend, Polyamorous::JoinDependencyExtensions) + Polyamorous::JoinDependency.singleton_class.send(:prepend, Polyamorous::JoinDependencyExtensions::ClassMethods) + Polyamorous::JoinAssociation.send(:prepend, Polyamorous::JoinAssociationExtensions) end