excepty 0.0.6

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTZlMjU1Y2JmMmRjZmIxZmMzZjQ2YThlMmU2ZDQzMmI5YjQwNzg1Mg==
5
+ data.tar.gz: !binary |-
6
+ MzkwNDRjYTIxZTMxNTdkYmM2M2FjN2U4MWRiNmYzZmQ0ZjE1MmNkZQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ Yzk5MDlhY2ZkNjhmZDI2Y2IxZmZmMGRiM2IwNjE5YWU5OGM5MWYxN2YwODNk
10
+ YzViMWQ3YzcxYTYzMmUxZGQ5ZDdjMzA3YjFmZTdiZjc1NTE5ZDk1NDE3NjBm
11
+ YWFmYzcxNjgxYWNhODczNTcwYzY4MzYxMjIwNTIzYmM1MWYyZjc=
12
+ data.tar.gz: !binary |-
13
+ MWEyZDlkMThmOTRlZWVmOTgwNjRlYjYyNzUzOGY4ZWUzYjg1NTZmMmJiOGI5
14
+ NjZmZWI5MWY5MGFkNWMwNzk3ZGYwNGZmZjhiYjVlZGQxNGYyNzIxYjZlMmIy
15
+ NjM5MjhhMzFjOWE5MmZkZjY0NTM2YTMwMGJhMWQwNTI5MjMzMzc=
data/bin/excepty ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+
data/excepty.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #require File.expand_path('../lib/excepty/version', __FILE__)
3
+
4
+ lib = File.expand_path('../lib', __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require 'excepty/version'
7
+
8
+ Gem::Specification.new do |gem|
9
+ gem.name = "excepty"
10
+ gem.version = Excepty::VERSION
11
+ gem.authors = ["Excepty"]
12
+ gem.email = ["gem@excepty.com"]
13
+ gem.description = %q{T ODO: Write a gem description} #TODO
14
+ gem.summary = %q{T ODO: Write a gem summary} #TODO
15
+ gem.homepage = "http://www.excepty.com/"
16
+
17
+ #gem.files = `git ls-files`.split($/)
18
+ gem.files = Dir['lib/**/*'] + Dir['*.rb'] + ["excepty.gemspec"]
19
+ # + Dir['spec/**/*'] + Dir['spec/**/*'] + Dir['rails/**/*'] + Dir['tasks/**/*']
20
+
21
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
22
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
23
+ gem.require_paths = ["lib"]
24
+
25
+ gem.executables << 'excepty'
26
+ #gem.rubyforge_project = %q{excepty}
27
+ #gem.requirements << "json_pure, json-jruby or json gem required"
28
+
29
+ end
data/lib/excepty.rb ADDED
@@ -0,0 +1,19 @@
1
+ EXCEPTY_IN_TESTING_MODE = false
2
+
3
+ require "excepty/version"
4
+
5
+ require 'excepty/manager'
6
+ require 'excepty/settings'
7
+ require 'excepty/analyzer'
8
+ require 'excepty/connector'
9
+ require 'excepty/exception_interceptor'
10
+
11
+
12
+ require 'excepty/railtie' if defined?(Rails) && defined?(Rails::Railtie)
13
+
14
+
15
+ module Excepty
16
+
17
+ # Your code goes here...
18
+
19
+ end
@@ -0,0 +1,10 @@
1
+ require 'excepty/analyzers/enviroment'
2
+ require 'excepty/analyzers/error'
3
+
4
+ module Excepty
5
+ module Analyzer
6
+ def self.example
7
+ #Excepty::Manager.logga Enviroment.get_struct
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,138 @@
1
+
2
+ module Excepty
3
+ module Analyzer
4
+ class Enviroment
5
+
6
+ def self.get_struct( my_env = nil )
7
+ my_env = ENV if my_env.blank?
8
+ return_struct = {}
9
+ begin
10
+ return_struct['env'] = get_env( my_env )
11
+ rescue Exception => e
12
+ Excepty::Manager.logga "exception (get_struct-get_env)"
13
+ begin
14
+ Excepty::Manager.logga e
15
+ return_struct['env'] = 'EXCEPTION'
16
+ #return_struct['env'] = my_env
17
+ rescue Exception => e
18
+ end
19
+ end
20
+ begin
21
+ return_struct['rack_env'] = my_env['RACK_ENV']
22
+ return_struct['rails_env'] = my_env['RAILS_ENV']
23
+ return_struct['host'] = begin Socket.gethostname; rescue Exception => e; 'UNKNOWN' end
24
+ rescue Exception => e
25
+ end
26
+ begin
27
+ return_struct['root_folder'] = Rails.root
28
+ return_struct['root_folder_dir_pwd'] = Dir.pwd
29
+
30
+ return_struct['ruby_version'] = RUBY_VERSION
31
+ return_struct['ruby_pathlevel'] = begin RUBY_PATCHLEVEL; rescue Exception => e; 'EXCEPTION' end
32
+ return_struct['ruby_release_date'] = begin RUBY_RELEASE_DATE; rescue Exception => e; 'EXCEPTION' end
33
+ return_struct['ruby_platform'] = begin RUBY_PLATFORM; rescue Exception => e; 'EXCEPTION' end
34
+ return_struct['root_folder_bis'] = begin RAILS_ROOT; rescue Exception => e; 'EXCEPTION' end
35
+ rescue Exception => e
36
+ end
37
+ begin
38
+ #return_struct['libraries_loaded_keys'] = Gem.loaded_specs.keys
39
+ return_struct['libraries_loaded_all'] = Gem.loaded_specs.values.map{|x| "#{x.name} (#{x.version})"}
40
+ rescue Exception => e
41
+ end
42
+
43
+ return return_struct
44
+ end
45
+
46
+
47
+ private
48
+
49
+ def self.get_env( my_env )
50
+ env = {}
51
+ #Excepty::Manager.logga "before each" if EXCEPTY_IN_TESTING_MODE
52
+ my_env.each do |key, value|
53
+ #Excepty::Manager.logga "each: #{ key }" if EXCEPTY_IN_TESTING_MODE
54
+ if env[key].blank?
55
+ env = get_hash( env, key, value)
56
+ else
57
+ begin
58
+ env["other"] = {} if env["other"].blank?
59
+ env["other"][key] = value.to_json
60
+ rescue Exception => e
61
+ Excepty::Manager.logga "exp" if EXCEPTY_IN_TESTING_MODE
62
+ end
63
+ end
64
+ end
65
+ return env
66
+ end
67
+
68
+ def self.get_hash( env, key, value )
69
+ #TODO da testare
70
+ key_arr = key.split(".")
71
+ if key_arr.size == 1
72
+ env["#{key}"] = get_value( value )
73
+ else
74
+ #Excepty::Manager.logga "else" if EXCEPTY_IN_TESTING_MODE
75
+ new_key = key_arr.shift()
76
+ #Excepty::Manager.logga "new_key: #{new_key} key_arr: #{ key_arr.join(".") }" if EXCEPTY_IN_TESTING_MODE
77
+ env[new_key] = {} if env[new_key].blank?
78
+ unless env[new_key].is_a? Hash
79
+ tmp = env[new_key]
80
+ env[new_key] = {}
81
+ env[new_key]["excepty_value_not_hash"] = tmp
82
+ end
83
+ env["#{new_key}"] = get_hash( env[new_key], key_arr.join("."), value )
84
+ end
85
+ return env
86
+ end
87
+
88
+ def self.get_value( value )
89
+ begin
90
+ case value
91
+ when String, Fixnum, Integer, Bignum
92
+ return value
93
+ when NilClass
94
+ return nil
95
+ when Array, Hash
96
+ return value
97
+ when ApplicationController
98
+ return value.class.to_s
99
+
100
+ #TODO dividere con un altro switch compreso tra try e catch
101
+ when ActionDispatch::RemoteIp::GetIp
102
+ return value.to_s
103
+ when FalseClass, TrueClass
104
+ return value.to_s
105
+ #when ActionDispatch::Routing::RouteSet
106
+ #Excepty::Manager.logga value.router
107
+ #return value.class.to_s
108
+ when StringIO
109
+ if EXCEPTY_IN_TESTING_MODE
110
+ Excepty::Manager.logga "StringIO"
111
+ Excepty::Manager.logga value.string
112
+ Excepty::Manager.logga value.to_json
113
+ end
114
+ return value.string
115
+ else
116
+ Excepty::Manager.logga "value.class => #{ value.class.to_s }" if EXCEPTY_IN_TESTING_MODE
117
+ return value.class.to_s
118
+ end
119
+ rescue Exception => e
120
+ Excepty::Manager.logga "EXCEPTY-exception (get_value)" if EXCEPTY_IN_TESTING_MODE
121
+ return "EXCEPTY-exception (get_value)"
122
+ end
123
+ end
124
+ =begin
125
+ TODO
126
+ value.class => StringIO
127
+ value.class => IO
128
+ value.class => ActionDispatch::Routing::RouteSet
129
+ value.class => ActiveSupport::TaggedLogging
130
+ value.class => Rails::BacktraceCleaner
131
+ value.class => ActionDispatch::RemoteIp::GetIp
132
+ value.class => ActionDispatch::Cookies::CookieJar
133
+ =end
134
+
135
+
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,20 @@
1
+ module Excepty
2
+ module Analyzer
3
+ class Error
4
+
5
+ def self.get_struct( exception, env )
6
+ return_struct = {}
7
+
8
+ return_struct["exception_class"] = exception.class.to_s
9
+ return_struct["message"] = exception.message.to_s
10
+ return_struct["backtrace"] = exception.backtrace
11
+
12
+ return return_struct
13
+ end
14
+
15
+ private
16
+
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ module Excepty
2
+ module Analyzer
3
+ class Repository
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Excepty
2
+ module Analyzer
3
+ class Request
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,61 @@
1
+ require 'zlib'
2
+ require 'base64'
3
+ require 'net/http'
4
+ require 'net/https'
5
+ require 'uri'
6
+ #require 'json'
7
+
8
+
9
+ #http://apidock.com/ruby/Net/HTTP
10
+
11
+ module Excepty
12
+ Excepty::Manager.logga "Excepty - Settings - 2" if EXCEPTY_IN_TESTING_MODE
13
+ class Connector
14
+ def self.call( url, data = {}, extra_params = nil)
15
+ arr = []
16
+ arr.push( "key=#{ Excepty::Settings.config[:key] }" )
17
+ arr.push( "pv=#{ Excepty::Settings::PROTOCOL_VERSION }" )
18
+ arr += extra_params.map{ |k,v| "#{k.to_s}=#{v.to_s}" } unless extra_params.blank?
19
+ url_with_params = url.to_s + "?#{ arr.join("&") }"
20
+ data_compressed = Zlib::Deflate.deflate( data.to_json, Zlib::BEST_SPEED )
21
+ data_formatted = Base64.encode64( data_compressed )
22
+ return start_call( url_with_params, data_formatted )
23
+ end
24
+
25
+
26
+ private
27
+
28
+ def self.start_call( url, data )
29
+ config = Excepty::Settings.config
30
+ proxy_settings = Net::HTTP::Proxy( config[:proxy_host], config[:proxy_port], config[:proxy_user], config[:proxy_pass] )
31
+ conn = proxy_settings.new(config[:server_host], config[:server_port])
32
+ if !config[:ssl].blank? && ( config[:ssl] == true || config[:ssl].to_s == 'true' )
33
+ conn.use_ssl = true
34
+ conn.verify_mode = OpenSSL::SSL::VERIFY_NONE
35
+ else
36
+ conn.use_ssl = false
37
+ end
38
+ conn.open_timeout = config[:open_timeout]
39
+ conn.read_timeout = config[:read_timeout]
40
+ begin
41
+ data_to_sent = URI.encode(data)
42
+ response = conn.post(url, data_to_sent)
43
+ Excepty::Manager.logga "ricevuto qualcosa" if EXCEPTY_IN_TESTING_MODE
44
+ case response
45
+ when Net::HTTPSuccess
46
+ Excepty::Manager.logga "successofull" if EXCEPTY_IN_TESTING_MODE
47
+ data = JSON.parse( response.body )
48
+ return { 'status' => response.code, 'data' => data }
49
+ else
50
+ Excepty::Manager.logga "NOOOOOOO successofull" if EXCEPTY_IN_TESTING_MODE
51
+ return { 'status' => response.code, 'data' => nil }
52
+ end
53
+ rescue Exception => e
54
+ Excepty::Manager.logga "Exceptionnnnnnnn" if EXCEPTY_IN_TESTING_MODE
55
+ Excepty::Manager.logga e if EXCEPTY_IN_TESTING_MODE
56
+ return { 'status' => -1, 'data' => nil }
57
+ end
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,28 @@
1
+ module Excepty
2
+ module ExceptionInterceptor
3
+
4
+ def self.included(base)
5
+ base.send( :alias_method_chain, :render_exception, :excepty )
6
+ Excepty::Manager.logga "Excepty - ExceptionInterceptor - included" if EXCEPTY_IN_TESTING_MODE
7
+ end
8
+
9
+ def render_exception_with_excepty( env, exception )
10
+ Excepty::Manager.logga "Excepty - ExceptionInterceptor - render_exception_with_excepty" if EXCEPTY_IN_TESTING_MODE
11
+ begin
12
+ Excepty::Manager.analyse_exception( env, exception )
13
+ rescue Exception => e
14
+ Excepty::Manager.logga "EXCEPTION" if EXCEPTY_IN_TESTING_MODE
15
+ Excepty::Manager.logga e if EXCEPTY_IN_TESTING_MODE
16
+ Excepty::Manager.logga "e.class" if EXCEPTY_IN_TESTING_MODE
17
+ Excepty::Manager.logga e.class if EXCEPTY_IN_TESTING_MODE
18
+ Excepty::Manager.logga "e.message" if EXCEPTY_IN_TESTING_MODE
19
+ Excepty::Manager.logga e.message if EXCEPTY_IN_TESTING_MODE
20
+ Excepty::Manager.logga "e.backtrace" if EXCEPTY_IN_TESTING_MODE
21
+ Excepty::Manager.logga e.backtrace if EXCEPTY_IN_TESTING_MODE
22
+ end
23
+
24
+ render_exception_without_excepty( env, exception )
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,148 @@
1
+ require 'logger'
2
+
3
+ module Excepty
4
+ class Manager
5
+ @@excepty_session_id = nil
6
+ @@excepty_session_id_bis
7
+ EXCEPTY_SESSION_FILE_NAME = "tmp/excepty.sid"
8
+ EXCEPTY_LOGGER_FILE_NAME = "excepty.log"
9
+ EXCEPTY_DEFAULT_LOG_LEVEL = Logger::INFO
10
+
11
+
12
+ cattr_accessor :logger
13
+
14
+
15
+ self.logger = if defined?(Rails)
16
+ Rails.logger
17
+ elsif defined?(EXCEPTY_DEFAULT_LOG_LEVEL)
18
+ EXCEPTY_DEFAULT_LOG_LEVEL
19
+ else
20
+ nil
21
+ end
22
+
23
+
24
+ def self.start()
25
+ self.logger ||= Logger.new( File.join( Rails.root, "log", EXCEPTY_LOGGER_FILE_NAME ) )
26
+
27
+ logga( "Manager: - start" ) if EXCEPTY_IN_TESTING_MODE
28
+
29
+ app_env = get_env_struct()
30
+ gem_info = get_gem_info_struct()
31
+ app_info = get_app_info_struct()
32
+
33
+ struct_to_send = { app_env: app_env, gem_info: gem_info, app_info: app_info }
34
+ begin struct_to_send["time_now"] = Time.now.utc; rescue Exception => e; end
35
+ #struct_to_send = {}
36
+ returned_obj = Excepty::Connector.call( "/collector/start", struct_to_send )
37
+ if returned_obj['status'].to_i == 200
38
+ @@excepty_session_id = returned_obj['data']['reload_id']
39
+ @@excepty_session_id_bis = @@excepty_session_id
40
+ File.delete( EXCEPTY_SESSION_FILE_NAME ) if File::exists?( "file.rb" )
41
+ file = File.new( EXCEPTY_SESSION_FILE_NAME, "w" )
42
+ file.puts @@excepty_session_id
43
+ file.close
44
+ logga "Dir.tmpdir: #{ Dir.tmpdir }" if EXCEPTY_IN_TESTING_MODE
45
+ message_response = "Excepty - connetted"
46
+ logga "@@excepty_session_id: #{@@excepty_session_id}" if EXCEPTY_IN_TESTING_MODE
47
+ logga "self.excepty_session_id: #{ self.excepty_session_id }" if EXCEPTY_IN_TESTING_MODE
48
+ else
49
+ #TODO vedere che fare
50
+ message_response = "Excepty - NOT connetted"
51
+ end
52
+ begin
53
+ logga(message_response)
54
+ Rails.logger.info(message_response)
55
+ rescue Exception => e
56
+ end
57
+ logga "@@excepty_session_id: #{@@excepty_session_id}" if EXCEPTY_IN_TESTING_MODE
58
+ logga "self.excepty_session_id: #{ self.excepty_session_id }" if EXCEPTY_IN_TESTING_MODE
59
+ end
60
+
61
+ def self.analyse_exception( env, exception )
62
+ logga "Excepty - Exception detected"
63
+ app_env = get_env_struct( env )
64
+ gem_info = get_gem_info_struct()
65
+ exc_info = get_exception_struct( exception, env )
66
+ struct_to_send = { app_env: app_env, gem_info: gem_info, exc_info: exc_info }
67
+ begin struct_to_send["time_now"] = Time.now.utc; rescue Exception => e; end
68
+ #@@excepty_session_id = nil
69
+ if @@excepty_session_id.blank?
70
+ logga "allora @@excepty_session_id.blank" if EXCEPTY_IN_TESTING_MODE
71
+ #self.start()
72
+ file = File.new( EXCEPTY_SESSION_FILE_NAME, "r" )
73
+ if file
74
+ content = file.sysread(20)
75
+ logga content if EXCEPTY_IN_TESTING_MODE
76
+ logga "LEGGGGGOOOOO"
77
+ logga "LEGGGGGOOOOO"
78
+ logga "LEGGGGGOOOOO"
79
+ @@excepty_session_id = content.to_i
80
+ end
81
+ end
82
+ logga "@@excepty_session_id: #{@@excepty_session_id}" if EXCEPTY_IN_TESTING_MODE
83
+ logga "self.excepty_session_id: #{ self.excepty_session_id }" if EXCEPTY_IN_TESTING_MODE
84
+ begin
85
+ logga "@@@@excepty_session_id_bis: #{ @@excepty_session_id_bis }" if EXCEPTY_IN_TESTING_MODE
86
+ rescue Exception => e
87
+ end
88
+ begin
89
+ returned_obj = Excepty::Connector.call( "/collector/error", struct_to_send, { session_id: ( @@excepty_session_id || self.excepty_session_id ) } )
90
+ logga "Excepty - Exception sent"
91
+ rescue Exception => e
92
+ logga "Excepty - Exception NOT sent"
93
+ end
94
+ end
95
+
96
+ def self.excepty_session_id
97
+ @@excepty_session_id
98
+ end
99
+
100
+ def self.logga(text, level = EXCEPTY_DEFAULT_LOG_LEVEL)
101
+ text = "[Excepty(#{name})] #{text}"
102
+ logger.add level, "#{Time.now.strftime('%FT%T%z')}: #{text}" if logger
103
+ end
104
+
105
+
106
+ private
107
+
108
+ def self.get_gem_info_struct()
109
+ gem_info = nil
110
+ begin
111
+ gem_info = { name: "excepty", version: Excepty::VERSION, protocol_version: Excepty::Settings::PROTOCOL_VERSION }
112
+ rescue Exception => e
113
+ end
114
+ return gem_info
115
+ end
116
+
117
+ def self.get_app_info_struct()
118
+ gem_settings = nil
119
+ begin
120
+ gem_settings = Excepty::Settings.get_struct
121
+ rescue Exception => e
122
+ end
123
+ return gem_settings
124
+ end
125
+
126
+ def self.get_env_struct( env = nil )
127
+ app_env = nil
128
+ begin
129
+ app_env = Excepty::Analyzer::Enviroment.get_struct( env )
130
+ rescue Exception => e
131
+ logga "Exception - Excepty::Analyzer::Enviroment.get_struct" if EXCEPTY_IN_TESTING_MODE
132
+ end
133
+ return app_env
134
+ end
135
+
136
+ def self.get_exception_struct( exception, env )
137
+ exc_info = nil
138
+ begin
139
+ exc_info = Excepty::Analyzer::Error.get_struct( exception, env )
140
+ rescue Exception => e
141
+ logga "exceptiodfdfs"
142
+ logga e
143
+ end
144
+ return exc_info
145
+ end
146
+
147
+ end
148
+ end
@@ -0,0 +1,38 @@
1
+ require 'excepty'
2
+ require 'rails'
3
+
4
+ #http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html
5
+
6
+ module Excepty
7
+ class Railtie < Rails::Railtie
8
+ initializer "excepty.middleware" do |app|
9
+ config_yml_file = File.join( Rails.root, "/config/excepty.yml" )
10
+ Excepty::Settings.configure_with_file( config_yml_file )
11
+ Excepty::Manager.logga "EXCEPTY - Maybe We Ara in!!" if EXCEPTY_IN_TESTING_MODE
12
+ Excepty::Manager.logga "nome #{ Excepty::Settings.config[:app_name] }" if EXCEPTY_IN_TESTING_MODE
13
+
14
+ #Excepty::Manager.logga "ANALIZER"
15
+ #Excepty::Manager.logga Excepty::Analyzer::Enviroment.get_struct
16
+ #Excepty::Manager.logga Excepty::Analyzer.example
17
+
18
+ Excepty::Manager.start()
19
+
20
+ if Excepty::Settings.can_catch_exceptions?
21
+ if defined?(ActionDispatch::DebugExceptions)
22
+ #rails 3.2.X
23
+ Excepty::Manager.logga "rails 3.2.X" if EXCEPTY_IN_TESTING_MODE
24
+ ActionDispatch::DebugExceptions.send(:include,Excepty::ExceptionInterceptor)
25
+ elsif defined?(ActionDispatch::ShowExceptions)
26
+ #rails 3.0.X -> 3.1.X
27
+ Excepty::Manager.logga "rails 3.0.X -> 3.1.X" if EXCEPTY_IN_TESTING_MODE
28
+ else
29
+ #rails ~ 2.X
30
+ Excepty::Manager.logga "rails ~ 2.X" if EXCEPTY_IN_TESTING_MODE
31
+ end
32
+ Excepty::Manager.logga "Excepty - exception module actived"
33
+ else
34
+ Excepty::Manager.logga "Excepty - exception module NOT actived"
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,96 @@
1
+ require 'yaml'
2
+ require 'erb'
3
+
4
+ #http://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem
5
+
6
+ Excepty::Manager.logga "Excepty - Settings - 1" if EXCEPTY_IN_TESTING_MODE
7
+ module Excepty
8
+ Excepty::Manager.logga "Excepty - Settings - 2" if EXCEPTY_IN_TESTING_MODE
9
+ class Settings
10
+
11
+ PROTOCOL_VERSION = "1"
12
+
13
+ Excepty::Manager.logga "Excepty - Settings - 3" if EXCEPTY_IN_TESTING_MODE
14
+ # Settings defaults
15
+ @config = {
16
+ # APP INFO
17
+ :key => "1A2B3C4D5E",
18
+ :app_name => "My Application",
19
+
20
+ # DEBUGING
21
+ :enabled => true,
22
+ :releases_enabled => true,
23
+ :version_enabled => true,
24
+
25
+ #SERVER
26
+ :server_host => "collector.excepty.com",
27
+ :server_port => 80,
28
+
29
+ # CONNECTION
30
+ :ssl => false,
31
+ :proxy_host => nil, #hostname
32
+ :proxy_port => nil, #8080
33
+ :proxy_user => nil,
34
+ :proxy_pass => nil,
35
+
36
+ :open_timeout => 4,
37
+ :read_timeout => 7
38
+ }
39
+ @valid_config_keys = @config.keys
40
+
41
+ # Configure Settings through yaml file
42
+ def self.configure_with_file( config_yml_file )
43
+ #begin
44
+ if config_yml_file.blank? || !File.file?( config_yml_file )
45
+ #TODO what can I do or say?
46
+ Excepty::Manager.logga "BLANCO" if EXCEPTY_IN_TESTING_MODE
47
+ return
48
+ end
49
+
50
+ Excepty::Manager.logga "Excepty - Settings - 5" if EXCEPTY_IN_TESTING_MODE
51
+ #begin
52
+ enviroment = ENV['RAILS_ENV'] || ENV['RACK_ENV']
53
+ config_yml = YAML::load( IO.read( config_yml_file ) )
54
+ #config_yml = YAML.load( ERB.new( File.new( config_yml_file ).read ).result )
55
+ config_yml_by_env = config_yml[enviroment] || {}
56
+ begin
57
+ rescue Errno::ENOENT
58
+ log(:warning, "YAML configuration file couldn't be found. Using defaults."); return
59
+ rescue Psych::SyntaxError
60
+ log(:warning, "YAML configuration file contains invalid syntax. Using defaults."); return
61
+ end
62
+
63
+ #begin
64
+ #@config.each { |k,v| @config[k.to_sym] = config_yml_by_env[k.to_sym] || config_yml[k.to_sym] || v if @valid_config_keys.include? k.to_sym }
65
+ @config.each do |k,v|
66
+ @config[k.to_sym] = config_yml_by_env[k.to_s] || config_yml[k.to_s] || v if @valid_config_keys.include? k.to_sym
67
+ end
68
+ Excepty::Manager.logga "@config: #{@config.to_json}" if EXCEPTY_IN_TESTING_MODE
69
+ begin # <= lele
70
+ rescue Exception => e
71
+ log(:warning, "YAML Settings error in load yml file."); return
72
+ end
73
+ end
74
+
75
+ def self.config
76
+ @config
77
+ end
78
+
79
+ def self.can_catch_exceptions?
80
+ return true if EXCEPTY_IN_TESTING_MODE
81
+ return @config['enabled'] || true
82
+ end
83
+
84
+ def self.get_struct
85
+ obj = {}
86
+ begin obj['app_name'] = @config[:app_name]; rescue Exception => e; end
87
+ begin obj['key'] = @config[:key]; rescue Exception => e; end
88
+ begin obj['webapp_name_by_env'] = ENV["APP_NAME"]; rescue Exception => e; end
89
+ begin obj['webapp_name'] = Rails.application.class.parent_name; rescue Exception => e; end
90
+ begin obj['webapp_name_class'] = Rails.application.class.to_s; rescue Exception => e; end
91
+ return obj
92
+ end
93
+
94
+ end
95
+
96
+ end
@@ -0,0 +1,3 @@
1
+ module Excepty
2
+ VERSION = "0.0.6"
3
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: excepty
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Excepty
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-22 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: ! 'T ODO: Write a gem description'
14
+ email:
15
+ - gem@excepty.com
16
+ executables:
17
+ - excepty
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/excepty
22
+ - excepty.gemspec
23
+ - lib/excepty.rb
24
+ - lib/excepty/analyzer.rb
25
+ - lib/excepty/analyzers/enviroment.rb
26
+ - lib/excepty/analyzers/error.rb
27
+ - lib/excepty/analyzers/repositoy.rb
28
+ - lib/excepty/analyzers/request.rb
29
+ - lib/excepty/connector.rb
30
+ - lib/excepty/exception_interceptor.rb
31
+ - lib/excepty/manager.rb
32
+ - lib/excepty/railtie.rb
33
+ - lib/excepty/settings.rb
34
+ - lib/excepty/version.rb
35
+ homepage: http://www.excepty.com/
36
+ licenses: []
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.3.0
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: ! 'T ODO: Write a gem summary'
58
+ test_files: []