wat_catcher 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,7 +13,12 @@ module WatCatcher
13
13
  config_file = ::Rails.root.join("config", "wat_catcher.yml")
14
14
  config = YAML.load_file(config_file) if File.exists?(config_file)
15
15
  WatCatcher.configure(config[::Rails.env] ? config[::Rails.env] : config) if config
16
+
17
+ end
18
+ initializer "wat_catcher.view_helpers" do |app|
19
+ ActionView::Base.send :include, ::WatCatcher::Helper
16
20
  end
21
+
17
22
  end
18
23
 
19
24
  end
@@ -1,3 +1,3 @@
1
1
  module WatCatcher
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -0,0 +1,7 @@
1
+ module WatCatcher
2
+ module Helper
3
+ def javascript_wat_catcher
4
+ javascript_include_tag "wat_catcher", "data-host" => WatCatcher.configuration.host, "data-app_env" => ::Rails.env
5
+ end
6
+ end
7
+ end
data/lib/wat_catcher.rb CHANGED
@@ -2,6 +2,7 @@ require "wat_catcher/version"
2
2
 
3
3
  require 'wat_catcher/backgrounder'
4
4
  require "wat_catcher/middleware"
5
+ require "wat_catcher/wattle_helper"
5
6
 
6
7
  require "wat_catcher/railtie" if defined?(Rails::Railtie)
7
8
  module WatCatcher
@@ -0,0 +1,56 @@
1
+ #Send the error to the same host that served this file (I think)
2
+ class @WatCatcher
3
+
4
+
5
+ constructor: (target=window) ->
6
+ scripts = document.getElementsByTagName("script");
7
+ node = scripts[scripts.length - 1];
8
+ for attr in node.attributes
9
+ if attr.nodeName == 'data-host'
10
+ @host = attr.nodeValue
11
+ if attr.nodeName == 'data-app_env'
12
+ @appEnv = attr.nodeValue
13
+ if @appEnv? && @host?
14
+ break
15
+
16
+ @oldErrorHandler = target.onerror
17
+ target.onerror = @watHandler
18
+
19
+ toQuery: (params, prefix="") ->
20
+ query = ""
21
+
22
+ unless params instanceof Object
23
+ return "#{prefix}=#{params}&"
24
+
25
+ for k, v of params
26
+ k = encodeURIComponent(k)
27
+ k = if prefix == "" then k else "#{prefix}[#{k}]"
28
+ if v instanceof Array
29
+ for i in v
30
+ query += @toQuery(i, "#{k}[]")
31
+ else if v instanceof Object
32
+ query += "#{@toQuery(v, k)}"
33
+ else
34
+ query += "#{k}=#{encodeURIComponent(v)}&"
35
+ query
36
+
37
+ watHandler: (msg, url, line) =>
38
+ try
39
+ params = {
40
+ wat: {
41
+ page_url: window.location.toString()
42
+ message: msg
43
+ backtrace: [url+":"+line]
44
+ app_env: @appEnv
45
+ }
46
+ }
47
+
48
+ img = new Image()
49
+ img.src = "#{@host}/create/wat?#{@toQuery(params)}"
50
+ catch error
51
+
52
+ if typeof @oldErrorHandler == 'function'
53
+ @oldErrorHandler(arguments...)
54
+
55
+
56
+ window.watCatcher = new WatCatcher()
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wat_catcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-26 00:00:00.000000000 Z
12
+ date: 2013-06-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -128,9 +128,10 @@ files:
128
128
  - lib/wat_catcher/middleware.rb
129
129
  - lib/wat_catcher/railtie.rb
130
130
  - lib/wat_catcher/version.rb
131
+ - lib/wat_catcher/wattle_helper.rb
131
132
  - spec/javascripts/support/jasmine.yml
132
133
  - spec/javascripts/wat_catcher_spec.coffee
133
- - vendor/assets/javascripts/wat_catcher.coffee.erb
134
+ - vendor/assets/javascripts/wat_catcher.coffee
134
135
  - wat_catcher.gemspec
135
136
  homepage: ''
136
137
  licenses:
@@ -1,26 +0,0 @@
1
- #Send the error to the same host that served this file (I think)
2
- class @WatCatcher
3
-
4
- constructor: (target=window) ->
5
- @oldErrorHandler = target.onerror
6
- target.onerror = @watHandler
7
-
8
- watHandler: (msg, url, line) =>
9
- xmlhttp = if window.XMLHttpRequest
10
- new XMLHttpRequest()
11
- else
12
- new ActiveXObject("Microsoft.XMLHTTP")
13
-
14
- params = "wat[page_url]=#{escape(window.location.toString())}"
15
- params += "&wat[message]=#{escape(msg)}"
16
- params += "&wat[backtrace][]=#{escape(url+":"+line)}"
17
- params += "&wat[app_env]=#{escape(@appEnv)}"
18
- xmlhttp.open("POST", "<%= WatCatcher.configuration.host %>/wats", true);
19
- xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
20
- xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
21
- xmlhttp.send(params);
22
-
23
- if typeof @oldErrorHandler == 'function'
24
- @oldErrorHandler(msg, url, line)
25
-
26
- window.watCatcher = new WatCatcher()