apphunk 0.1.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +5 -6
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/apphunk.gemspec +35 -3
- data/doc/apple-touch-icon.png +0 -0
- data/doc/classes/Apphunk/Config.html +159 -0
- data/doc/classes/Apphunk/Logger.html +105 -0
- data/doc/classes/Apphunk/Proxy.html +196 -0
- data/doc/classes/Apphunk/Remote/Result.html +125 -0
- data/doc/classes/Apphunk/Remote.html +117 -0
- data/doc/classes/Apphunk.html +294 -0
- data/doc/created.rid +1 -0
- data/doc/css/main.css +263 -0
- data/doc/css/panel.css +383 -0
- data/doc/css/reset.css +53 -0
- data/doc/favicon.ico +0 -0
- data/doc/files/LICENSE.html +81 -0
- data/doc/files/README_rdoc.html +87 -0
- data/doc/files/lib/apphunk/config_rb.html +59 -0
- data/doc/files/lib/apphunk/logger_rb.html +59 -0
- data/doc/files/lib/apphunk/proxy_rb.html +68 -0
- data/doc/files/lib/apphunk/remote/result_rb.html +59 -0
- data/doc/files/lib/apphunk/remote_rb.html +70 -0
- data/doc/files/lib/apphunk_rb.html +66 -0
- data/doc/i/arrows.png +0 -0
- data/doc/i/results_bg.png +0 -0
- data/doc/i/tree_bg.png +0 -0
- data/doc/index.html +14 -0
- data/doc/js/jquery-1.3.2.min.js +19 -0
- data/doc/js/jquery-effect.js +593 -0
- data/doc/js/main.js +22 -0
- data/doc/js/searchdoc.js +628 -0
- data/doc/panel/index.html +71 -0
- data/doc/panel/search_index.js +1 -0
- data/doc/panel/tree.js +1 -0
- data/lib/apphunk/config.rb +54 -0
- data/lib/apphunk/logger.rb +12 -4
- data/lib/apphunk/proxy.rb +6 -2
- data/lib/apphunk.rb +57 -0
- data/rails/init.rb +3 -0
- data/spec/apphunk/proxy_spec.rb +11 -5
- metadata +35 -3
@@ -0,0 +1 @@
|
|
1
|
+
var search_data = {"index":{"searchIndex":["apphunk","config","logger","proxy","remote","result","config()","error()","log()","log_with_options()","new()","post()","prepare_payload()","process_response()","send_message_to_apphunkd()","license","readme.rdoc","apphunk.rb","config.rb","logger.rb","proxy.rb","remote.rb","result.rb"],"longSearchIndex":["lib/apphunk.rb","apphunk","apphunk","apphunk","apphunk","apphunk::remote","apphunk","apphunk::logger","apphunk","apphunk","apphunk::remote::result","apphunk::remote","apphunk::proxy","apphunk::proxy","apphunk::proxy","files/license.html","files/readme_rdoc.html","files/lib/apphunk_rb.html","files/lib/apphunk/config_rb.html","files/lib/apphunk/logger_rb.html","files/lib/apphunk/proxy_rb.html","files/lib/apphunk/remote_rb.html","files/lib/apphunk/remote/result_rb.html"],"info":[["Apphunk","lib/apphunk.rb","classes/Apphunk.html"," < ","",1],["Config","Apphunk","classes/Apphunk/Config.html"," < ","Used to configure the behaviour of Apphunk and its outgoing messages. Each option can be overriden by",1],["Logger","Apphunk","classes/Apphunk/Logger.html"," < ","",1],["Proxy","Apphunk","classes/Apphunk/Proxy.html"," < ","",1],["Remote","Apphunk","classes/Apphunk/Remote.html"," < ","",1],["Result","Apphunk::Remote","classes/Apphunk/Remote/Result.html"," < Object","",1],["config","Apphunk","classes/Apphunk.html#M000008","(&block)","Set runtime configuration options Yields Apphunk::Config which can be used to set configuration options",2],["error","Apphunk::Logger","classes/Apphunk/Logger.html#M000000","(message)","",2],["log","Apphunk","classes/Apphunk.html#M000006","(message, options = {})","Sends a +message+ to your remote inbox at apphunk.com * <tt>message</tt> - The body of the message *",2],["log_with_options","Apphunk","classes/Apphunk.html#M000007","(options = {}, &block)","Send messages with predefined options in a block Yields the Apphunk module which can be used to send",2],["new","Apphunk::Remote::Result","classes/Apphunk/Remote/Result.html#M000004","(opts = {})","",2],["post","Apphunk::Remote","classes/Apphunk/Remote.html#M000005","(url, payload = {}, post_timeout = 30)","",2],["prepare_payload","Apphunk::Proxy","classes/Apphunk/Proxy.html#M000002","(message, options)","",2],["process_response","Apphunk::Proxy","classes/Apphunk/Proxy.html#M000003","(result)","",2],["send_message_to_apphunkd","Apphunk::Proxy","classes/Apphunk/Proxy.html#M000001","(message, options)","",2],["LICENSE","files/LICENSE.html","files/LICENSE.html","","Copyright (c) 2009 Andreas Wolff Permission is hereby granted, free of charge, to any person obtaining",3],["README.rdoc","files/README_rdoc.html","files/README_rdoc.html","","= apphunk A library that send's messages to the remote logging service apphunk.com. == Note on Patches/Pull",3],["apphunk.rb","files/lib/apphunk_rb.html","files/lib/apphunk_rb.html","","",3],["config.rb","files/lib/apphunk/config_rb.html","files/lib/apphunk/config_rb.html","","",3],["logger.rb","files/lib/apphunk/logger_rb.html","files/lib/apphunk/logger_rb.html","","",3],["proxy.rb","files/lib/apphunk/proxy_rb.html","files/lib/apphunk/proxy_rb.html","","",3],["remote.rb","files/lib/apphunk/remote_rb.html","files/lib/apphunk/remote_rb.html","","",3],["result.rb","files/lib/apphunk/remote/result_rb.html","files/lib/apphunk/remote/result_rb.html","","",3]]}}
|
data/doc/panel/tree.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
var tree = [["","","files",[["LICENSE","files/LICENSE.html","",[]],["README.rdoc","files/README_rdoc.html","",[]],["","","lib",[["","","apphunk",[["config.rb","files/lib/apphunk/config_rb.html","",[]],["logger.rb","files/lib/apphunk/logger_rb.html","",[]],["proxy.rb","files/lib/apphunk/proxy_rb.html","",[]],["","","remote",[["result.rb","files/lib/apphunk/remote/result_rb.html","",[]]]],["remote.rb","files/lib/apphunk/remote_rb.html","",[]]]],["apphunk.rb","files/lib/apphunk_rb.html","",[]]]]]],["Apphunk","classes/Apphunk.html","",[["Config","classes/Apphunk/Config.html","",[]],["Logger","classes/Apphunk/Logger.html","",[]],["Proxy","classes/Apphunk/Proxy.html","",[]],["Remote","classes/Apphunk/Remote.html","",[["Result","classes/Apphunk/Remote/Result.html"," < Object",[]]]]]]]
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Apphunk
|
2
|
+
|
3
|
+
# Used to configure the behaviour of Apphunk and its outgoing messages. Each option can be overriden by Apphunk.log's +option+ parameter.
|
4
|
+
# If Apphunk is used as part of a Rails application, the configuration should go to +config/initializers/apphunk.rb+.
|
5
|
+
#
|
6
|
+
# *Note*: The configuration must be set using Apphunk.config as shown in the example below.
|
7
|
+
#
|
8
|
+
# ==== Example
|
9
|
+
# Apphunk.config do |config|
|
10
|
+
# config.token = "secret_project_token"
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
module Config
|
14
|
+
class << self
|
15
|
+
|
16
|
+
# The current environment. Automatically retrieved if Apphunk is running as part of a Rails app.
|
17
|
+
#
|
18
|
+
# ==== Example
|
19
|
+
# config.environment = 'production'
|
20
|
+
#
|
21
|
+
attr_accessor :environment
|
22
|
+
|
23
|
+
# A list of allowed environments. Apphunk will only send messages if Apphunk::Config.environment is part of these allowed environments.
|
24
|
+
# *Note*: This step is skipped if Apphunk::Config.environment is +empty+.
|
25
|
+
#
|
26
|
+
# ==== Example
|
27
|
+
# config.environments = %w(production staging)
|
28
|
+
#
|
29
|
+
attr_accessor :environments
|
30
|
+
|
31
|
+
# A list of tags to be send with each message.
|
32
|
+
#
|
33
|
+
# ==== Example
|
34
|
+
# config.tags = 'each, message, will, get, these, tags'
|
35
|
+
#
|
36
|
+
attr_accessor :tags
|
37
|
+
|
38
|
+
# The token as provided by apphunk.com. Used to authenticate a message request.
|
39
|
+
#
|
40
|
+
# ==== Example
|
41
|
+
# config.token = 'secrect_project_token'
|
42
|
+
#
|
43
|
+
attr_accessor :token
|
44
|
+
|
45
|
+
# A list of trails to be send with each message.
|
46
|
+
#
|
47
|
+
# ==== Example
|
48
|
+
# config.trails = { :product => 'Car', :country => 'Germany' }
|
49
|
+
#
|
50
|
+
attr_accessor :trails
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/apphunk/logger.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
module Apphunk
|
2
2
|
module Logger
|
3
3
|
class << self
|
4
|
-
|
4
|
+
|
5
5
|
def error(message)
|
6
|
-
|
6
|
+
message = "[Apphunk] Error: #{message}"
|
7
|
+
case
|
8
|
+
when Rails && Rails.logger
|
9
|
+
Rails.logger.error(message)
|
10
|
+
when RAILS_DEFAULT_LOGGER
|
11
|
+
RAILS_DEFAULT_LOGGER.error(message)
|
12
|
+
else
|
13
|
+
puts(message)
|
14
|
+
end
|
7
15
|
end
|
8
|
-
|
16
|
+
|
9
17
|
end
|
10
18
|
end
|
11
|
-
end
|
19
|
+
end
|
data/lib/apphunk/proxy.rb
CHANGED
@@ -8,6 +8,10 @@ module Apphunk
|
|
8
8
|
PROXY_API_URL = "http://127.0.0.1:8212/api/messages"
|
9
9
|
|
10
10
|
def send_message_to_apphunkd(message, options)
|
11
|
+
if options[:environments] && options[:environment] && !options[:environments].include?(options[:environment])
|
12
|
+
return false
|
13
|
+
end
|
14
|
+
|
11
15
|
payload = prepare_payload(message, options)
|
12
16
|
result = Apphunk::Remote.post(PROXY_API_URL, payload, 3)
|
13
17
|
return process_response(result)
|
@@ -28,11 +32,11 @@ module Apphunk
|
|
28
32
|
if result.response.code == '201'
|
29
33
|
return true
|
30
34
|
else
|
31
|
-
Apphunk::Logger.error "The Apphunkd
|
35
|
+
Apphunk::Logger.error "The Apphunkd-Proxy couldn't store the message: #{result.response.code} / #{result.response.body}"
|
32
36
|
return false
|
33
37
|
end
|
34
38
|
else
|
35
|
-
Apphunk::Logger.error "Connection Error: Could not get a response from Apphunkd in time"
|
39
|
+
Apphunk::Logger.error "Connection Error: Could not get a response from local Apphunkd-Proxy in time"
|
36
40
|
return false
|
37
41
|
end
|
38
42
|
end
|
data/lib/apphunk.rb
CHANGED
@@ -2,19 +2,50 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
module Apphunk
|
4
4
|
|
5
|
+
autoload :Config, 'apphunk/config'
|
5
6
|
autoload :Logger, 'apphunk/logger'
|
6
7
|
autoload :Proxy, 'apphunk/proxy'
|
7
8
|
autoload :Remote, 'apphunk/remote'
|
8
9
|
|
9
10
|
class << self
|
10
11
|
|
12
|
+
# Default options to be used for Apphunk.log. Initialized by Apphunk::Config.
|
11
13
|
attr_accessor :default_options
|
12
14
|
|
15
|
+
# Sends a +message+ to your remote inbox at apphunk.com
|
16
|
+
#
|
17
|
+
# * <tt>message</tt> - The body of the message
|
18
|
+
# * <tt>options</tt> - A hash of options. Merges with Apphunk.default_options
|
19
|
+
#
|
20
|
+
# For a list of available options see Apphunk::Config.
|
21
|
+
#
|
22
|
+
# ==== Examples
|
23
|
+
#
|
24
|
+
# Apphunk.log("Yet another hello world")
|
25
|
+
# Apphunk.log("Tag me baby", :tags => 'apphunk, doc, examples', :trails => { :user_id => 5 })
|
26
|
+
# Apphunk.log("I'm on my way to a different project", :token => 'secret_project_access_token')
|
27
|
+
#
|
13
28
|
def log(message, options = {})
|
14
29
|
options = (self.default_options || {}).merge(options)
|
15
30
|
Apphunk::Proxy.send_message_to_apphunkd(message, options)
|
16
31
|
end
|
17
32
|
|
33
|
+
# Send messages with predefined options in a block
|
34
|
+
#
|
35
|
+
# Yields the Apphunk module which can be used to send messages via Apphunk.log,
|
36
|
+
# but temporarily merges the provided +options+ with Apphunk.default_options.
|
37
|
+
# Can be used to send a bunch of messages with the same options.
|
38
|
+
#
|
39
|
+
# * <tt>options</tt> - A hash of options. Merges with Apphunk.default_options
|
40
|
+
#
|
41
|
+
# For a list of available options see Apphunk::Config.
|
42
|
+
#
|
43
|
+
# ==== Examples
|
44
|
+
# Apphunk.log_with_options(:tags => 'hello world') do |apphunk|
|
45
|
+
# apphunk.log("A messages with tags")
|
46
|
+
# apphunk.log("Another messages with the same tags")
|
47
|
+
# end
|
48
|
+
#
|
18
49
|
def log_with_options(options = {}, &block)
|
19
50
|
preserved_defaults = self.default_options
|
20
51
|
self.default_options = (self.default_options || {}).merge(options)
|
@@ -22,5 +53,31 @@ module Apphunk
|
|
22
53
|
self.default_options = preserved_defaults
|
23
54
|
end
|
24
55
|
|
56
|
+
# Set runtime configuration options
|
57
|
+
#
|
58
|
+
# Yields Apphunk::Config which can be used to set configuration options in one place.
|
59
|
+
# See Apphunk::Config for a list of available options. These options will be available in Apphunk.default_options.
|
60
|
+
#
|
61
|
+
# ==== Examples
|
62
|
+
#
|
63
|
+
# Apphunk.config do |config|
|
64
|
+
# config.token = "secret_project_token"
|
65
|
+
# config.environments = %w(staging production)
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
def config(&block)
|
69
|
+
yield Apphunk::Config
|
70
|
+
self.default_options[:tags] = Apphunk::Config.tags
|
71
|
+
self.default_options[:token] = Apphunk::Config.token
|
72
|
+
self.default_options[:trails] = Apphunk::Config.trails
|
73
|
+
self.default_options[:environments] = Apphunk::Config.environments
|
74
|
+
|
75
|
+
if Apphunk::Config.environment.blank?
|
76
|
+
Apphunk::Config.environment = self.default_options[:environment]
|
77
|
+
else
|
78
|
+
self.default_options[:environment] = Apphunk::Config.environment
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
25
82
|
end
|
26
83
|
end
|
data/rails/init.rb
CHANGED
data/spec/apphunk/proxy_spec.rb
CHANGED
@@ -13,6 +13,12 @@ describe Apphunk::Proxy do
|
|
13
13
|
Apphunk::Proxy.send_message_to_apphunkd("My Message", @opts)
|
14
14
|
end
|
15
15
|
|
16
|
+
it "should return false if options include allowed environments and the current environment isn't included in that list" do
|
17
|
+
@opts[:environments] = ['production', 'staging']
|
18
|
+
@opts[:environment] = 'development'
|
19
|
+
Apphunk::Proxy.send_message_to_apphunkd("My Message", @opts).should be_false
|
20
|
+
end
|
21
|
+
|
16
22
|
context 'posting' do
|
17
23
|
before(:each) do
|
18
24
|
@payload = { "prepared" => "payload" }
|
@@ -66,15 +72,15 @@ describe Apphunk::Proxy do
|
|
66
72
|
|
67
73
|
it 'should create an OpenStruct, containing the message and extracted options' do
|
68
74
|
payload = Apphunk::Proxy.prepare_payload("My Message", @opts)
|
69
|
-
payload
|
70
|
-
payload
|
71
|
-
payload
|
72
|
-
payload
|
75
|
+
payload[:message].should == "My Message"
|
76
|
+
payload[:token].should == "secret"
|
77
|
+
payload[:environment].should == "development"
|
78
|
+
payload[:tags].should == "test"
|
73
79
|
end
|
74
80
|
|
75
81
|
it 'should render the trails to json' do
|
76
82
|
payload = Apphunk::Proxy.prepare_payload("My Message", @opts)
|
77
|
-
payload
|
83
|
+
payload[:trails].should == "{\"user\":\"5\"}"
|
78
84
|
end
|
79
85
|
end
|
80
86
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apphunk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Wolff
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-27 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -61,7 +61,39 @@ files:
|
|
61
61
|
- TODO.rdoc
|
62
62
|
- VERSION
|
63
63
|
- apphunk.gemspec
|
64
|
+
- doc/apple-touch-icon.png
|
65
|
+
- doc/classes/Apphunk.html
|
66
|
+
- doc/classes/Apphunk/Config.html
|
67
|
+
- doc/classes/Apphunk/Logger.html
|
68
|
+
- doc/classes/Apphunk/Proxy.html
|
69
|
+
- doc/classes/Apphunk/Remote.html
|
70
|
+
- doc/classes/Apphunk/Remote/Result.html
|
71
|
+
- doc/created.rid
|
72
|
+
- doc/css/main.css
|
73
|
+
- doc/css/panel.css
|
74
|
+
- doc/css/reset.css
|
75
|
+
- doc/favicon.ico
|
76
|
+
- doc/files/LICENSE.html
|
77
|
+
- doc/files/README_rdoc.html
|
78
|
+
- doc/files/lib/apphunk/config_rb.html
|
79
|
+
- doc/files/lib/apphunk/logger_rb.html
|
80
|
+
- doc/files/lib/apphunk/proxy_rb.html
|
81
|
+
- doc/files/lib/apphunk/remote/result_rb.html
|
82
|
+
- doc/files/lib/apphunk/remote_rb.html
|
83
|
+
- doc/files/lib/apphunk_rb.html
|
84
|
+
- doc/i/arrows.png
|
85
|
+
- doc/i/results_bg.png
|
86
|
+
- doc/i/tree_bg.png
|
87
|
+
- doc/index.html
|
88
|
+
- doc/js/jquery-1.3.2.min.js
|
89
|
+
- doc/js/jquery-effect.js
|
90
|
+
- doc/js/main.js
|
91
|
+
- doc/js/searchdoc.js
|
92
|
+
- doc/panel/index.html
|
93
|
+
- doc/panel/search_index.js
|
94
|
+
- doc/panel/tree.js
|
64
95
|
- lib/apphunk.rb
|
96
|
+
- lib/apphunk/config.rb
|
65
97
|
- lib/apphunk/logger.rb
|
66
98
|
- lib/apphunk/proxy.rb
|
67
99
|
- lib/apphunk/remote.rb
|
@@ -98,7 +130,7 @@ rubyforge_project:
|
|
98
130
|
rubygems_version: 1.3.5
|
99
131
|
signing_key:
|
100
132
|
specification_version: 3
|
101
|
-
summary: A library
|
133
|
+
summary: A library that send's messages to Apphunk.com
|
102
134
|
test_files:
|
103
135
|
- spec/apphunk/proxy_spec.rb
|
104
136
|
- spec/apphunk_spec.rb
|