glitchy_gem 0.1
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.
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -0
- data/glitchy_gem.gemspec +22 -0
- data/lib/glitchy_gem/glitch.rb +39 -0
- data/lib/glitchy_gem/patches.rb +5 -0
- data/lib/glitchy_gem/rack.rb +30 -0
- data/lib/glitchy_gem/rails/action_controller_catcher.rb +34 -0
- data/lib/glitchy_gem/rails.rb +29 -0
- data/lib/glitchy_gem/railtie.rb +17 -0
- data/lib/glitchy_gem/version.rb +3 -0
- data/lib/glitchy_gem.rb +13 -0
- data/rails/init.rb +1 -0
- metadata +96 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
data/glitchy_gem.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/glitchy_gem/version", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "glitchy_gem"
|
6
|
+
s.version = GlitchyGem::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["GlitchyApp"]
|
9
|
+
s.email = ["support@glitchygem.com"]
|
10
|
+
s.homepage = "http://rubygems.org/gems/glitchy_gem"
|
11
|
+
s.summary = "The gem to enable you to track your application errors with GlitchApp"
|
12
|
+
s.description = "Track your application errors with GlitchyApp and search through them."
|
13
|
+
|
14
|
+
s.required_rubygems_version = ">= 1.3.6"
|
15
|
+
s.rubyforge_project = "glitchy_gem"
|
16
|
+
|
17
|
+
s.add_development_dependency "bundler", ">= 1.0.0"
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
21
|
+
s.require_path = 'lib'
|
22
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module GlitchyGem
|
2
|
+
class Glitch
|
3
|
+
attr_reader :exception
|
4
|
+
def initialize(e, options = {})
|
5
|
+
@rack_env = options[:rack_env] || {}
|
6
|
+
@exception = e
|
7
|
+
|
8
|
+
params = options[:params] || @rack_env['action_dispatch.request.parameters'] || rack_env(:params)
|
9
|
+
url = options[:url] || rack_env(:url)
|
10
|
+
controller = options[:controller] || params['controller']
|
11
|
+
action = options[:action] || params['action']
|
12
|
+
session = options[:session] || @rack_env['rack.session']
|
13
|
+
|
14
|
+
@uri = URI.parse("http://#{GlitchyGem.url}/glitches?auth_token=#{GlitchyGem.api_key}")
|
15
|
+
@http = Net::HTTP.new(@uri.host, @uri.port)
|
16
|
+
@request = Net::HTTP::Post.new(@uri.request_uri)
|
17
|
+
@request["Content-Type"] = "application/json"
|
18
|
+
@request.body = { :glitch => e.to_hash.merge({ :url => url, :params => params, :controller => controller, :action => action, :session => session, :environment => GlitchyGem.environment }) }.to_json
|
19
|
+
end
|
20
|
+
|
21
|
+
def send
|
22
|
+
begin
|
23
|
+
@http.request(@request)
|
24
|
+
rescue Errno::ECONNREFUSED => e
|
25
|
+
GlitchyGem.logger.info "Failed to connect to GlitchyApp. Could not notify about the exception #{self.exception.to_hash.inspect}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def rack_env(method)
|
32
|
+
rack_request.send(method) if rack_request
|
33
|
+
end
|
34
|
+
|
35
|
+
def rack_request
|
36
|
+
@rack_request ||= ::Rack::Request.new(@rack_env)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module GlitchyGem
|
5
|
+
class Rack
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
begin
|
12
|
+
response = @app.call(env)
|
13
|
+
rescue Exception => e
|
14
|
+
send_glitch(e, env)
|
15
|
+
raise
|
16
|
+
end
|
17
|
+
|
18
|
+
if env['rack.exception']
|
19
|
+
send_glitch(env['rack.exception'], env)
|
20
|
+
end
|
21
|
+
|
22
|
+
response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def send_glitch(e, env)
|
28
|
+
glitch = GlitchyGem::Glitch.new(e, :rack_env => env)
|
29
|
+
glitch.send
|
30
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module GlitchyGem
|
2
|
+
module Rails
|
3
|
+
module ActionControllerCatcher
|
4
|
+
|
5
|
+
def self.included(base) #:nodoc:
|
6
|
+
base.send(:alias_method, :rescue_action_without_glitchy, :rescue_action)
|
7
|
+
base.send(:alias_method, :rescue_action, :rescue_action_with_glitchy)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def rescue_action_with_glitchy(exception)
|
13
|
+
error_id = send_glitch(exception, req_data)
|
14
|
+
rescue_action_without_glitchy(exception)
|
15
|
+
end
|
16
|
+
|
17
|
+
def req_data
|
18
|
+
{
|
19
|
+
:params => params.to_hash,
|
20
|
+
:session => session.to_hash,
|
21
|
+
:controller => params[:controller],
|
22
|
+
:action => params[:action],
|
23
|
+
:url => "#{request.protocol}#{request.host}:#{request.port}#{request.request_uri}"
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def send_glitch(e, req_data)
|
32
|
+
glitch = GlitchyGem::Glitch.new(e, req_data)
|
33
|
+
glitch.send
|
34
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'glitchy_gem/rails/action_controller_catcher'
|
2
|
+
|
3
|
+
module GlitchyGem
|
4
|
+
module Rails
|
5
|
+
def self.initialize
|
6
|
+
if defined?(ActionController::Base)
|
7
|
+
ActionController::Base.send(:include, GlitchyGem::Rails::ActionControllerCatcher)
|
8
|
+
end
|
9
|
+
|
10
|
+
if defined?(::Rails.configuration) && ::Rails.configuration.respond_to?(:middleware)
|
11
|
+
::Rails.configuration.middleware.insert_after 'ActionController::Failsafe', GlitchyGem::Rack
|
12
|
+
end
|
13
|
+
|
14
|
+
if defined?(::Rails.logger)
|
15
|
+
rails_logger = ::Rails.logger
|
16
|
+
elsif defined?(RAILS_DEFAULT_LOGGER)
|
17
|
+
rails_logger = RAILS_DEFAULT_LOGGER
|
18
|
+
end
|
19
|
+
|
20
|
+
GlitchyGem.configure do |config|
|
21
|
+
config.environment ||= RAILS_ENV if defined?(RAILS_ENV)
|
22
|
+
config.logger ||= rails_logger
|
23
|
+
config.url ||= "glitchyapp.com"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
GlitchyGem::Rails.initialize
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module GlitchyGem
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer "glitchy.use_rack_middleware" do |app|
|
6
|
+
app.config.middleware.use "GlitchyGem::Rack"
|
7
|
+
end
|
8
|
+
|
9
|
+
config.after_initialize do
|
10
|
+
GlitchyGem.configure do |config|
|
11
|
+
config.environment ||= Rails.env
|
12
|
+
config.logger ||= Rails.logger
|
13
|
+
config.url ||= "glitchyapp.com"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/glitchy_gem.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'glitchy_gem/patches'
|
2
|
+
require 'glitchy_gem/glitch'
|
3
|
+
require 'glitchy_gem/rack'
|
4
|
+
require 'glitchy_gem/railtie' if defined?(Rails::Railtie)
|
5
|
+
|
6
|
+
module GlitchyGem
|
7
|
+
class << self
|
8
|
+
attr_accessor :api_key, :environment, :logger, :url
|
9
|
+
def configure
|
10
|
+
yield(self)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/rails/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'glitchy_gem/rails'
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: glitchy_gem
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: "0.1"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- GlitchyApp
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-06-18 00:00:00 -07:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: bundler
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 23
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 0
|
32
|
+
- 0
|
33
|
+
version: 1.0.0
|
34
|
+
type: :development
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Track your application errors with GlitchyApp and search through them.
|
37
|
+
email:
|
38
|
+
- support@glitchygem.com
|
39
|
+
executables: []
|
40
|
+
|
41
|
+
extensions: []
|
42
|
+
|
43
|
+
extra_rdoc_files: []
|
44
|
+
|
45
|
+
files:
|
46
|
+
- .gitignore
|
47
|
+
- Gemfile
|
48
|
+
- Rakefile
|
49
|
+
- glitchy_gem.gemspec
|
50
|
+
- lib/glitchy_gem.rb
|
51
|
+
- lib/glitchy_gem/glitch.rb
|
52
|
+
- lib/glitchy_gem/patches.rb
|
53
|
+
- lib/glitchy_gem/rack.rb
|
54
|
+
- lib/glitchy_gem/rails.rb
|
55
|
+
- lib/glitchy_gem/rails/action_controller_catcher.rb
|
56
|
+
- lib/glitchy_gem/railtie.rb
|
57
|
+
- lib/glitchy_gem/version.rb
|
58
|
+
- rails/init.rb
|
59
|
+
has_rdoc: true
|
60
|
+
homepage: http://rubygems.org/gems/glitchy_gem
|
61
|
+
licenses: []
|
62
|
+
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 23
|
83
|
+
segments:
|
84
|
+
- 1
|
85
|
+
- 3
|
86
|
+
- 6
|
87
|
+
version: 1.3.6
|
88
|
+
requirements: []
|
89
|
+
|
90
|
+
rubyforge_project: glitchy_gem
|
91
|
+
rubygems_version: 1.3.7
|
92
|
+
signing_key:
|
93
|
+
specification_version: 3
|
94
|
+
summary: The gem to enable you to track your application errors with GlitchApp
|
95
|
+
test_files: []
|
96
|
+
|