aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2007-07-25 13:05:58 +0000
committerRick Olson <technoweenie@gmail.com>2007-07-25 13:05:58 +0000
commitea07212d9780841fbfb3368247ccc0b4bdee5bf5 (patch)
tree6acfef274e6e1a8d12cb19aeb8280bbd9c97b255
parentf5ea6f880f365c5383d029bddc917baa82e56d55 (diff)
downloadrails-ea07212d9780841fbfb3368247ccc0b4bdee5bf5.tar.gz
rails-ea07212d9780841fbfb3368247ccc0b4bdee5bf5.tar.bz2
rails-ea07212d9780841fbfb3368247ccc0b4bdee5bf5.zip
dont call #collect on a string when returning query cache results. Closes #9099 [norbert]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7239 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--activerecord/lib/active_record/query_cache.rb2
-rw-r--r--activerecord/test/query_cache_test.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/query_cache.rb b/activerecord/lib/active_record/query_cache.rb
index 191e5a3d97..e25335ecea 100644
--- a/activerecord/lib/active_record/query_cache.rb
+++ b/activerecord/lib/active_record/query_cache.rb
@@ -61,7 +61,7 @@ module ActiveRecord
if result
# perform a deep #dup in case result is an array
- result = result.collect { |row| row.dup } if result.respond_to?(:collect)
+ result = result.collect { |row| row.dup } if result.is_a?(Array)
result.dup
else
nil
diff --git a/activerecord/test/query_cache_test.rb b/activerecord/test/query_cache_test.rb
index b09ceea746..53dc581641 100644
--- a/activerecord/test/query_cache_test.rb
+++ b/activerecord/test/query_cache_test.rb
@@ -57,6 +57,12 @@ class QueryCacheTest < Test::Unit::TestCase
"Connections should be different, Course connects to a different database"
end
end
+
+ def test_cache_does_not_wrap_string_results_in_arrays
+ Task.cache do
+ assert_instance_of String, Task.connection.select_value("SELECT count(*) AS count_all FROM tasks")
+ end
+ end
end
uses_mocha('QueryCacheExpiryTest') do