diff --git a/lib/active_model/serializer/lint.rb b/lib/active_model/serializer/lint.rb
index 97ffcd7f..bf3b7a37 100644
--- a/lib/active_model/serializer/lint.rb
+++ b/lib/active_model/serializer/lint.rb
@@ -36,7 +36,17 @@ module ActiveModel::Serializer::Lint
# Typically, it is implemented by including ActiveModel::Serialization.
def test_read_attribute_for_serialization
assert_respond_to resource, :read_attribute_for_serialization, "The resource should respond to read_attribute_for_serialization"
- assert_equal resource.method(:read_attribute_for_serialization).arity, 1
+ actual_arity = resource.method(:read_attribute_for_serialization).arity
+ if defined?(::Rubinius)
+ # 1 for def read_attribute_for_serialization(name); end
+ # -2 for alias :read_attribute_for_serialization :send for rbx because :shrug:
+ assert_includes [1, -2], actual_arity, "expected #{actual_arity.inspect} to be 1 or -2"
+ else
+ # using absolute value since arity is:
+ # 1 for def read_attribute_for_serialization(name); end
+ # -1 for alias :read_attribute_for_serialization :send
+ assert_includes [1, -1], actual_arity, "expected #{actual_arity.inspect} to be 1 or -1"
+ end
end
# Passes if the object responds to as_json and if it takes
@@ -68,7 +78,7 @@ module ActiveModel::Serializer::Lint
end
# Passes if the object responds to cache_key and if it takes no
- # arguments.
+ # arguments (Rails 4.0) or a splat (Rails 4.1+).
# Fails otherwise.
#
# cache_key returns a (self-expiring) unique key for the object,
@@ -76,7 +86,11 @@ module ActiveModel::Serializer::Lint
# It is not required unless caching is enabled.
def test_cache_key
assert_respond_to resource, :cache_key
- assert_equal resource.method(:cache_key).arity, 0
+ actual_arity = resource.method(:cache_key).arity
+ # using absolute value since arity is:
+ # 0 for Rails 4.1+, *timestamp_names
+ # -1 for Rails 4.0, no arguments
+ assert_includes [-1, 0], actual_arity, "expected #{actual_arity.inspect} to be 0 or -1"
end
# Passes if the object responds to id and if it takes no