aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2010-03-11 17:32:26 -0800
committerJeremy Kemper <jeremy@bitsweat.net>2010-03-11 17:43:29 -0800
commit47bc138fc1d9ddafab8e4cf9cac8865f2092c003 (patch)
tree65fb223886d6eeb8bc364971d13050a6f1252cca
parent1f6c5677ad18a2d49866100b043b82bd030875d4 (diff)
downloadrails-47bc138fc1d9ddafab8e4cf9cac8865f2092c003.tar.gz
rails-47bc138fc1d9ddafab8e4cf9cac8865f2092c003.tar.bz2
rails-47bc138fc1d9ddafab8e4cf9cac8865f2092c003.zip
Write strings to fragment cache, not outputbuffers
-rw-r--r--actionpack/lib/action_controller/caching/fragments.rb4
-rw-r--r--activesupport/lib/active_support/core_ext/string/output_safety.rb6
2 files changed, 8 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/caching/fragments.rb b/actionpack/lib/action_controller/caching/fragments.rb
index 00a7f034d3..bb5ff95a67 100644
--- a/actionpack/lib/action_controller/caching/fragments.rb
+++ b/actionpack/lib/action_controller/caching/fragments.rb
@@ -41,7 +41,9 @@ module ActionController #:nodoc:
else
pos = buffer.length
block.call
- write_fragment(name, buffer[pos..-1], options)
+ content = buffer[pos..-1]
+ content = content.as_str if content.respond_to?(:as_str)
+ write_fragment(name, content, options)
end
else
block.call
diff --git a/activesupport/lib/active_support/core_ext/string/output_safety.rb b/activesupport/lib/active_support/core_ext/string/output_safety.rb
index c55b471986..3a49cd288b 100644
--- a/activesupport/lib/active_support/core_ext/string/output_safety.rb
+++ b/activesupport/lib/active_support/core_ext/string/output_safety.rb
@@ -89,8 +89,12 @@ module ActiveSupport #:nodoc:
self
end
+ def as_str
+ ''.replace(self)
+ end
+
def to_yaml
- "".replace(self).to_yaml
+ as_str.to_yaml
end
end
end