diff --git a/lib/liquid/strainer.rb b/lib/liquid/strainer.rb index b6dad26..95e8c0e 100644 --- a/lib/liquid/strainer.rb +++ b/lib/liquid/strainer.rb @@ -16,6 +16,9 @@ module Liquid INTERNAL_METHOD = /^__/ @@required_methods = Set.new([:__id__, :__send__, :respond_to?, :extend, :methods, :class, :object_id]) + # Ruby 1.9.2 introduces Object#respond_to_missing?, which is invoked by Object#respond_to? + @@required_methods << :respond_to_missing? if Object.respond_to? :respond_to_missing? + @@filters = {} def initialize(context) diff --git a/test/strainer_test.rb b/test/strainer_test.rb index 540888c..55b5987 100644 --- a/test/strainer_test.rb +++ b/test/strainer_test.rb @@ -18,4 +18,9 @@ class StrainerTest < Test::Unit::TestCase assert_equal true, strainer.respond_to?('size', false) end + # Asserts that Object#respond_to_missing? is not being undefined in Ruby versions where it has been implemented + # Currently this method is only present in Ruby v1.9.2, or higher + def test_object_respond_to_missing + assert_equal Object.respond_to?(:respond_to_missing?), Strainer.create(nil).respond_to?(:respond_to_missing?) + end end \ No newline at end of file