class Shoulda::Matchers::RailsShim

@private

Public Class Methods

action_pack_gte_4_1?() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 102
def self.action_pack_gte_4_1?
  Gem::Requirement.new('>= 4.1').satisfied_by?(action_pack_version)
end
action_pack_major_version() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 98
def self.action_pack_major_version
  ::ActionPack::VERSION::MAJOR
end
action_pack_version() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 106
def self.action_pack_version
  Gem::Version.new(::ActionPack::VERSION::STRING)
end
active_model_major_version() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 94
def self.active_model_major_version
  ::ActiveModel::VERSION::MAJOR
end
active_record_major_version() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 90
def self.active_record_major_version
  ::ActiveRecord::VERSION::MAJOR
end
clean_scope(klass) click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 21
def self.clean_scope(klass)
  if active_record_major_version == 4
    klass.all
  else
    klass.scoped
  end
end
flashes_ivar() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 13
def self.flashes_ivar
  if action_pack_major_version >= 4
    :@flashes
  else
    :@used
  end
end
generate_validation_message(record, attribute, type, model_name, options) click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 68
def self.generate_validation_message(record, attribute, type, model_name, options)
  if record && record.errors.respond_to?(:generate_message)
    record.errors.generate_message(attribute.to_sym, type, options)
  else
    simply_generate_validation_message(attribute, type, model_name, options)
  end
rescue RangeError
  simply_generate_validation_message(attribute, type, model_name, options)
end
layouts_ivar() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 5
def self.layouts_ivar
  if action_pack_major_version >= 4
    '@_layouts'
  else
    '@layouts'
  end
end
serialized_attributes_for(model) click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 54
def self.serialized_attributes_for(model)
  if defined?(::ActiveRecord::Type::Serialized)
    # Rails 5+
    model.columns.select do |column|
      column.cast_type.is_a?(::ActiveRecord::Type::Serialized)
    end.inject({}) do |hash, column|
      hash[column.name.to_s] = column.cast_type.coder
      hash
    end
  else
    model.serialized_attributes
  end
end
simply_generate_validation_message(attribute, type, model_name, options) click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 78
def self.simply_generate_validation_message(attribute, type, model_name, options)
  default_translation_keys = [
    :"activerecord.errors.models.#{model_name}.#{type}",
    :"activerecord.errors.messages.#{type}",
    :"errors.attributes.#{attribute}.#{type}",
    :"errors.messages.#{type}"
  ]
  primary_translation_key = :"activerecord.errors.models.#{model_name}.attributes.#{attribute}.#{type}"
  translate_options = { default: default_translation_keys }.merge(options)
  I18n.translate(primary_translation_key, translate_options)
end
type_cast_default_for(model, column) click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 45
def self.type_cast_default_for(model, column)
  if model.respond_to?(:column_defaults)
    # Rails 4.2
    model.column_defaults[column.name]
  else
    column.default
  end
end
validates_confirmation_of_error_attribute(matcher) click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 29
def self.validates_confirmation_of_error_attribute(matcher)
  if active_model_major_version == 4
    matcher.confirmation_attribute
  else
    matcher.attribute
  end
end
verb_for_update() click to toggle source
# File lib/shoulda/matchers/rails_shim.rb, line 37
def self.verb_for_update
  if action_pack_gte_4_1?
    :patch
  else
    :put
  end
end