From 8e4573a7bf3407cf7d1fb3f72c7d42404b1fa852 Mon Sep 17 00:00:00 2001 From: DBA Date: Sun, 22 Aug 2010 19:47:33 +0800 Subject: [PATCH] Strainer - respond_to_missing? is now a required method --- lib/liquid/strainer.rb | 3 +++ test/strainer_test.rb | 5 +++++ 2 files changed, 8 insertions(+) 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