Sha256: 1b756c153c4759b9754611b250458bebdbf4be1196c44a0af18fbe6b57121dbe

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

# :enddoc:
module Shoulda
  module Callback
    module Matchers
      module RailsVersionHelper
        class RailsVersion
          %w(< <= > >= ==).each do |operand|
            define_method operand do |version_string|
              version_int = convert_str_to_int(version_string)
              rails_version_int.send(operand, version_int)
            end
          end

          private

          def rails_version_int
            calculate_version_int(rails_major_version, rails_minor_version)
          end

          def convert_str_to_int(version_string)
            major, minor = version_string.split('.').map(&:to_i)
            calculate_version_int(major, minor)
          end

          def calculate_version_int(major, minor)
            major * 100 + minor
          end

          def rails_major_version
            version_module::MAJOR
          end

          def rails_minor_version
            version_module::MINOR
          end

          def version_module
            (defined?(::ActiveRecord) ? ::ActiveRecord : ::ActiveModel)::VERSION
          end
        end

        def rails_version
          @rails_version ||= RailsVersion.new
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shoulda-callback-matchers-1.1.4 lib/shoulda/callback/matchers/rails_version_helper.rb
shoulda-callback-matchers-1.1.3 lib/shoulda/callback/matchers/rails_version_helper.rb
shoulda-callback-matchers-1.1.2 lib/shoulda/callback/matchers/rails_version_helper.rb