yogi_berra 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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