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