diff options
author | Kir Shatrov <shatrov@me.com> | 2016-12-15 15:19:34 -0500 |
---|---|---|
committer | Kir Shatrov <shatrov@me.com> | 2016-12-15 17:07:58 -0500 |
commit | 3e018eca32dd5bedaefe03845f076849a6fc5e4b (patch) | |
tree | c335c7ff19da69b60a5ae6650f11e787f98deed0 /activerecord/lib | |
parent | 753da21322a2701f8b2294da1c26df8a783436d5 (diff) | |
download | rails-3e018eca32dd5bedaefe03845f076849a6fc5e4b.tar.gz rails-3e018eca32dd5bedaefe03845f076849a6fc5e4b.tar.bz2 rails-3e018eca32dd5bedaefe03845f076849a6fc5e4b.zip |
Throw friendly error message when fixture is not a hash
Right now, when fixture is not a Hash we throw an error message
saying "fixture is not a hash". This is not very user friendly because
it's not saying which fixture is invalid.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/fixture_set/file.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/fixture_set/file.rb b/activerecord/lib/active_record/fixture_set/file.rb index 5ba354d758..6cf2e01179 100644 --- a/activerecord/lib/active_record/fixture_set/file.rb +++ b/activerecord/lib/active_record/fixture_set/file.rb @@ -66,10 +66,13 @@ module ActiveRecord # Validate our unmarshalled data. def validate(data) unless Hash === data || YAML::Omap === data - raise Fixture::FormatError, "fixture is not a hash" + raise Fixture::FormatError, "fixture is not a hash: #{@file}" end - raise Fixture::FormatError unless data.all? { |name, row| Hash === row } + invalid = data.reject { |_, row| Hash === row } + if invalid.any? + raise Fixture::FormatError, "fixture key is not a hash: #{@file}, keys: #{invalid.keys.inspect}" + end data end end |