yogi_berra 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Y2IwMzU1NmVjNzlkYzIxYjFjYjIwZGE4YjhhMTg5YWVjZTIyMTg3OQ==
4
+ YjIyM2NiNWRiYjNkYjIwYTUwY2VmZWQzMWEzNzU3NzhlNzRkMjZjNw==
5
5
  data.tar.gz: !binary |-
6
- MTRhMmVjNTY1NGVkNjhmZTRjYjQ5NzVjMmU1YTgyZTliZWNkNmU5Ng==
6
+ YzE5MmYwY2NhMzlkN2Q2NmExMmJiOWFhZDQ3YTczOThmMDU5M2I5YQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTk4NTY2NjVmYjc5OTdjNjU1M2IwZDU2ODUyOTUzOTY2ZmEzMTE5ZTQ3NDYw
10
- ZGE0MWMzY2QxOGI4MmIwMjNkOTgxM2U3ZTYxZmViMzlmZGQ0ZmU1OWYzOGY5
11
- YmVmMDBkOTMwOWY5OWM1YTc1OTkzOGVmNDNhZmI5YzdmNzY3NzE=
9
+ YTIzODQ4NjEyMjQxODlhNDRiM2NiYThjYmNhYjQ3MDIxOGE0NjJmYWYwZGZk
10
+ MmE2Nzk2MDQ1ODU0Y2EwYmNkZjI1N2Y5NDg4MmRiMTY3MjJkYjExNjQyNzZh
11
+ M2NmNmZhNTQ4NmFkYzI1NzQ1MGRlYTk0NjE2MGYyNTA3N2MzZGE=
12
12
  data.tar.gz: !binary |-
13
- MTQxOGE5ZjI1ZGZiZjU2MzExZTA2YTA0NmYxNDc5NWQ5NTkxNDZmYjAwYTk1
14
- YWU4NWMwMmEzMDJmY2MxZTBjY2JmMWU3MmRhOWZkNDlkOGM5MjIzY2MzODM1
15
- YWM5MGVjZDhjNjU3YmE4MjNlNDVjOWYxOTA4MjEzNzNhNWE0ZDc=
13
+ ZDRhM2FjMDRiOTVlOGMxYTNiMzk4NzRlMjEwZmRiOWY0ODgxMjBlMzFhYjA3
14
+ NmY5MTJhY2QxYjdlNGMwMjg2MTE1NzdiNzQ2ZTBmM2U3N2M5ZWJhNDRhMzg0
15
+ NmQ0ZDY5NWNjNmRlMGI2MDk2OTNhMjA5Yjk3M2RmZjdjMDZiOWY=
data/lib/keys.rb ADDED
@@ -0,0 +1,21 @@
1
+ # adapted from https://raw.github.com/rails/rails/master/activesupport/lib/active_support/core_ext/hash/keys.rb
2
+ class Hash
3
+ def deep_transform_both!(&block)
4
+ keys.each do |key|
5
+ value = delete(key)
6
+ self[yield(key)] = value.is_a?(Hash) ? value.deep_transform_both!(&block) : yield(value)
7
+ end
8
+ self
9
+ end
10
+
11
+ def deep_stringify_keys_and_values!
12
+ exceptable_data_types = [Fixnum, Float, String]
13
+ deep_transform_both! do |element|
14
+ if exceptable_data_types.include?(element.class)
15
+ element
16
+ else
17
+ element.to_s
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,4 +1,5 @@
1
1
  require 'mongo'
2
+ require 'keys'
2
3
 
3
4
  module YogiBerra
4
5
  class Data
@@ -11,6 +12,8 @@ module YogiBerra
11
12
  data[:controller] = parse_controller(controller) if controller
12
13
  data.merge!(environment)
13
14
  end
15
+ # convert all the keys to strings for bson storage, using activesupport keys.rb file
16
+ data.deep_stringify_keys_and_values!
14
17
  YogiBerra::Catcher.connection["caught_exceptions"].insert(data)
15
18
  end
16
19
 
@@ -1,3 +1,3 @@
1
1
  module YogiBerra
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/spec/keys_spec.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+ require 'bson'
3
+
4
+ describe "Hash Keys" do
5
+ it "should stringify hash parts to be used with BSON" do
6
+ hash = {:foo => "bar", :bar => Class, "object" => {:a => 1, :b => "1", :c => {:d => 10.5, :e => nil}}}
7
+ hash.deep_stringify_keys_and_values!
8
+ lambda { BSON::BSON_CODER.serialize(hash) }.should_not raise_error
9
+ end
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yogi_berra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Earl Krauss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-26 00:00:00.000000000 Z
11
+ date: 2014-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -88,6 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - lib/facets.rb
91
+ - lib/keys.rb
91
92
  - lib/yogi_berra/action_controller_catcher.rb
92
93
  - lib/yogi_berra/backtrace.rb
93
94
  - lib/yogi_berra/catcher.rb
@@ -106,6 +107,7 @@ files:
106
107
  - spec/fixtures/config/yogi.yml
107
108
  - spec/fixtures/rails.rb
108
109
  - spec/fixtures/test.yml
110
+ - spec/keys_spec.rb
109
111
  - spec/spec_helper.rb
110
112
  - spec/yogi_berra_catcher_spec.rb
111
113
  - spec/yogi_berra_data_spec.rb
@@ -139,6 +141,7 @@ test_files:
139
141
  - spec/fixtures/config/yogi.yml
140
142
  - spec/fixtures/rails.rb
141
143
  - spec/fixtures/test.yml
144
+ - spec/keys_spec.rb
142
145
  - spec/spec_helper.rb
143
146
  - spec/yogi_berra_catcher_spec.rb
144
147
  - spec/yogi_berra_data_spec.rb