logworm_amqp 0.8.9 → 0.9.0
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/CHANGELOG +103 -1
- data/Manifest +8 -7
- data/Rakefile +4 -4
- data/bin/lw-compute +66 -0
- data/bin/lw-tail +84 -0
- data/lib/base/db.rb +8 -6
- data/lib/client/logger.rb +93 -0
- data/lib/client/rack.rb +61 -0
- data/lib/client/rails.rb +105 -0
- data/lib/cmd/compute.rb +66 -0
- data/lib/cmd/tail.rb +106 -0
- data/lib/logworm_amqp.rb +61 -0
- data/lib/logworm_utils.rb +4 -0
- data/logworm_amqp.gemspec +20 -16
- metadata +64 -43
- data/README.md +0 -3
- data/spec/base_spec.rb +0 -143
- data/spec/builder_spec.rb +0 -26
- data/spec/config_spec.rb +0 -36
- data/spec/spec.opts +0 -4
- data/spec/spec_helper.rb +0 -8
- data/tests/builder_test.rb +0 -52
data/lib/client/rails.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
###
|
2
|
+
# Extemds ActionController::Base and aliases the process method, to wrap it with the standard logworm request cycle
|
3
|
+
#
|
4
|
+
# By default it will automatically log web requests (in a short format) into web_log
|
5
|
+
# Can also log headers, if specified
|
6
|
+
###
|
7
|
+
if defined?(ActionController)
|
8
|
+
|
9
|
+
require 'benchmark'
|
10
|
+
|
11
|
+
ActionController::Base.class_eval do
|
12
|
+
## Basic settings: log requests, without headers. Use default db, and timeout after 1 second
|
13
|
+
@@log_requests = true
|
14
|
+
@@log_headers = false
|
15
|
+
@@dev_logging = false
|
16
|
+
@@timeout = 1
|
17
|
+
Logworm::Logger.use_default_db
|
18
|
+
|
19
|
+
###
|
20
|
+
# Disable automatic logging of requests
|
21
|
+
# Use from ApplicationController
|
22
|
+
###
|
23
|
+
def self.donot_log_requests
|
24
|
+
@@log_requests = false
|
25
|
+
end
|
26
|
+
|
27
|
+
###
|
28
|
+
# Log headers with requests
|
29
|
+
# Use from ApplicationController
|
30
|
+
###
|
31
|
+
def self.log_headers
|
32
|
+
@@log_headers = true
|
33
|
+
end
|
34
|
+
|
35
|
+
###
|
36
|
+
# Turn on logging in development mode
|
37
|
+
###
|
38
|
+
def self.log_in_development
|
39
|
+
@@dev_logging = true
|
40
|
+
end
|
41
|
+
|
42
|
+
###
|
43
|
+
# Replaces (and embeds) the default Rails processing of a request.
|
44
|
+
# Call the original method, logs the request unless disabled, and flushes the logworm list
|
45
|
+
###
|
46
|
+
def process_with_logworm_log(request, response, method = :perform_action, *arguments)
|
47
|
+
unless (RAILS_ENV == 'production' or (RAILS_ENV == 'development' and @@dev_logging))
|
48
|
+
return process_without_logworm_log(request, response, method, *arguments)
|
49
|
+
end
|
50
|
+
|
51
|
+
Logworm::Logger.start_cycle
|
52
|
+
begin
|
53
|
+
startTime = Time.now
|
54
|
+
response = process_without_logworm_log(request, response, method, *arguments)
|
55
|
+
appTime = (Time.now - startTime)
|
56
|
+
ensure
|
57
|
+
log_request(request, response, appTime)
|
58
|
+
return response
|
59
|
+
end
|
60
|
+
end
|
61
|
+
alias_method_chain :process, :logworm_log
|
62
|
+
|
63
|
+
|
64
|
+
private
|
65
|
+
def log_request(request, response, appTime)
|
66
|
+
method = request.env['REQUEST_METHOD']
|
67
|
+
path = request.env['REQUEST_PATH'].blank? ? "/" : request.env['REQUEST_PATH']
|
68
|
+
ip = request.env['REMOTE_ADDR']
|
69
|
+
http_headers = request.headers.reject {|k,v| !(k.to_s =~ /^HTTP/) }
|
70
|
+
status = response.status[0..2]
|
71
|
+
queue_size = request.env['HTTP_X_HEROKU_QUEUE_DEPTH'].blank? ? -1 : request.env['HTTP_X_HEROKU_QUEUE_DEPTH'].to_i
|
72
|
+
|
73
|
+
entry = { :summary => "#{method} #{path} - #{status} #{appTime}",
|
74
|
+
:request_method => method,
|
75
|
+
:request_path => path,
|
76
|
+
:request_ip => ip,
|
77
|
+
:input => cleaned_input(request),
|
78
|
+
:response_status => status,
|
79
|
+
:profiling => appTime,
|
80
|
+
:queue_size => queue_size}
|
81
|
+
entry[:request_headers] = http_headers if @@log_headers
|
82
|
+
entry[:response_headers] = response.headers if @@log_headers
|
83
|
+
Logworm::Logger.log(:web_log, entry) if @@log_requests
|
84
|
+
|
85
|
+
begin
|
86
|
+
Timeout::timeout(@@timeout) {
|
87
|
+
sent, elapsed = Logworm::Logger.flush
|
88
|
+
}
|
89
|
+
rescue Exception => e
|
90
|
+
# Ignore --nothing we can do. The list of logs may (and most likely will) be preserved for the next request
|
91
|
+
Rails.logger.error("logworm call failed: #{e}")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def cleaned_input(request)
|
96
|
+
pars = request.parameters.clone
|
97
|
+
pars.delete("controller")
|
98
|
+
pars.delete("action")
|
99
|
+
respond_to?(:filter_parameters) ? filter_parameters(pars) : pars
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
data/lib/cmd/compute.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
class LogwormCompute
|
2
|
+
def initialize(table, function, field, options)
|
3
|
+
@table = table
|
4
|
+
@function = function
|
5
|
+
@field = field
|
6
|
+
@options = options
|
7
|
+
|
8
|
+
@valuefield = @field ? "#{@function}(#{@field})" : @function
|
9
|
+
|
10
|
+
begin
|
11
|
+
@db = Logworm::DB.from_config_or_die(@options[:app])
|
12
|
+
spec = {:aggregate_function => @function, :aggregate_argument => @field}.merge(@options)
|
13
|
+
@query = Logworm::QueryBuilder.new(spec)
|
14
|
+
rescue Exception => e
|
15
|
+
$stderr.puts "There was an error: #{e}"
|
16
|
+
exit(-1)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def run
|
22
|
+
# Create a resource for the query
|
23
|
+
begin
|
24
|
+
query_data = @db.query(@table, @query.to_json)
|
25
|
+
url = query_data["results_uri"]
|
26
|
+
rows = @db.results(url + "?nocache=1")["results"]
|
27
|
+
rescue Logworm::DatabaseException, Logworm::ForbiddenAccessException => e
|
28
|
+
$stderr.puts "Error: #{e}"
|
29
|
+
exit(-1)
|
30
|
+
rescue Logworm::InvalidQueryException => e
|
31
|
+
$stderr.puts "#{e}, #{@query.to_json}"
|
32
|
+
exit(-1)
|
33
|
+
rescue Exception => e
|
34
|
+
$stderr.puts "Error: #{e}"
|
35
|
+
exit(-1)
|
36
|
+
end
|
37
|
+
|
38
|
+
if @options[:debug]
|
39
|
+
puts "logworm query: #{@query.to_json}"
|
40
|
+
puts "logworm query url: #{query_data["self_uri"]}"
|
41
|
+
puts "logworm results url: #{url}"
|
42
|
+
puts
|
43
|
+
end
|
44
|
+
|
45
|
+
if @query.groups.length > 0
|
46
|
+
results = {}
|
47
|
+
rows.each do |r|
|
48
|
+
grp = []
|
49
|
+
@query.groups.each do |g|
|
50
|
+
grp << "#{g}:#{r[g]}"
|
51
|
+
end
|
52
|
+
key = "[#{grp.join(', ')}]"
|
53
|
+
value = r[@function]
|
54
|
+
results[key] = {:value => value, :keys => r.dup}
|
55
|
+
results[key][:keys].delete(@function)
|
56
|
+
end
|
57
|
+
results.keys.sort.each do |k|
|
58
|
+
puts "#{k} \t ==> #{@valuefield} = #{results[k][:value]}"
|
59
|
+
end
|
60
|
+
else
|
61
|
+
puts "#{@valuefield} = #{rows.first[@function]}"
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/lib/cmd/tail.rb
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
class LogwormTail
|
2
|
+
def initialize(table, options)
|
3
|
+
@table = table
|
4
|
+
@options = options
|
5
|
+
|
6
|
+
begin
|
7
|
+
@db = Logworm::DB.from_config_or_die(@options[:app])
|
8
|
+
@query = Logworm::QueryBuilder.new(@options.merge(:force_ts => true))
|
9
|
+
rescue Exception => e
|
10
|
+
$stderr.puts "Error: #{e}"
|
11
|
+
exit(-1)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.list(options = {})
|
16
|
+
begin
|
17
|
+
@db = Logworm::DB.from_config_or_die(options[:app])
|
18
|
+
@tables = @db.tables
|
19
|
+
if @tables and @tables.size > 0
|
20
|
+
puts "The following are the tables that you've created thus far:"
|
21
|
+
@tables.sort {|x,y| x["tablename"] <=> y["tablename"]}.each do |t|
|
22
|
+
puts "\t - #{t["tablename"]}, #{t["rows"]} rows, last updated on #{date_time(t["last_write"])}"
|
23
|
+
end
|
24
|
+
else
|
25
|
+
puts "You haven't recorded any data yet."
|
26
|
+
end
|
27
|
+
rescue Exception => e
|
28
|
+
$stderr.puts "Error: #{e}"
|
29
|
+
exit(-1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def run
|
34
|
+
# Create a resource for the query
|
35
|
+
begin
|
36
|
+
query_data = @db.query(@table, @query.to_json)
|
37
|
+
url = query_data["results_uri"]
|
38
|
+
rescue Logworm::DatabaseException, Logworm::ForbiddenAccessException => e
|
39
|
+
$stderr.puts "Error: #{e}"
|
40
|
+
exit(-1)
|
41
|
+
rescue Logworm::InvalidQueryException => e
|
42
|
+
$stderr.puts "#{e}"
|
43
|
+
exit(-1)
|
44
|
+
rescue Exception => e
|
45
|
+
$stderr.puts "Error: #{e}"
|
46
|
+
exit(-1)
|
47
|
+
end
|
48
|
+
|
49
|
+
if @options[:debug]
|
50
|
+
puts "logworm query: #{@query.to_json}"
|
51
|
+
puts "logworm query url: #{query_data["self_uri"]}"
|
52
|
+
puts "logworm results url: #{url}"
|
53
|
+
puts "refresh frequency: #{@options[:frequency]}" if @options[:loop]
|
54
|
+
puts
|
55
|
+
end
|
56
|
+
|
57
|
+
while true do
|
58
|
+
begin
|
59
|
+
last_printed = print_rows(@db.results(url + "?nocache=1")["results"], last_printed || nil)
|
60
|
+
rescue Logworm::DatabaseException, Logworm::ForbiddenAccessException => e
|
61
|
+
$stderr.puts "Error: #{e}"
|
62
|
+
exit(-1)
|
63
|
+
rescue Logworm::InvalidQueryException => e
|
64
|
+
$stderr.puts "#{e}"
|
65
|
+
exit(-1)
|
66
|
+
rescue Exception => e
|
67
|
+
$stderr.puts "Error: #{e}"
|
68
|
+
exit(-1)
|
69
|
+
end
|
70
|
+
exit(0) unless @options[:loop]
|
71
|
+
sleep @options[:frequency]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def self.date_time(val)
|
78
|
+
val.gsub(/T/, ' @ ').gsub(/Z/, ' GMT')
|
79
|
+
end
|
80
|
+
|
81
|
+
def print_rows(rows, last)
|
82
|
+
last = "" if last.nil?
|
83
|
+
rows.reverse.each do |r|
|
84
|
+
next unless r["_ts"]
|
85
|
+
if r["_ts"] > last
|
86
|
+
last = r["_ts"]
|
87
|
+
r.delete("_id") unless @options[:fields].include?("_id")
|
88
|
+
r.delete("_ts") unless @options[:fields].include?("_ts")
|
89
|
+
puts "#{LogwormTail.date_time(last)} ==> "
|
90
|
+
print_row(r)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
last
|
94
|
+
end
|
95
|
+
|
96
|
+
def print_row(r)
|
97
|
+
if @options[:flat]
|
98
|
+
puts "\t" + r.keys.sort.map {|k| "#{k}: #{r[k].inspect}"}.join(', ')
|
99
|
+
else
|
100
|
+
r.keys.sort.each do |k|
|
101
|
+
puts "\t#{k}: #{r[k].inspect}"
|
102
|
+
end
|
103
|
+
puts
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
data/lib/logworm_amqp.rb
CHANGED
@@ -1,3 +1,64 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/base/db'
|
2
2
|
require File.dirname(__FILE__) + '/base/config'
|
3
3
|
require File.dirname(__FILE__) + '/base/query_builder'
|
4
|
+
|
5
|
+
require File.dirname(__FILE__) + '/client/logger'
|
6
|
+
require File.dirname(__FILE__) + '/client/rack'
|
7
|
+
require File.dirname(__FILE__) + '/client/rails'
|
8
|
+
|
9
|
+
def lw_log (logname, values)
|
10
|
+
Logworm::Logger.log(logname, values)
|
11
|
+
end
|
12
|
+
|
13
|
+
###
|
14
|
+
# Perform a query against the logworm server
|
15
|
+
#
|
16
|
+
# Requires a log table, and a query
|
17
|
+
# The query can be provided as a JSON string, following the syntax described in http://www.logworm.com/docs/query
|
18
|
+
# or as a Hash of options, with the following keys (all optional)
|
19
|
+
# :fields => String with a comma-separated list of fields (quoted or not), or Array of Strings
|
20
|
+
# :aggregate_function => String
|
21
|
+
# :aggregate_argument => String
|
22
|
+
# :aggregate_group => String with a comma-separated list of fields (quoted or not), or Array of Strings
|
23
|
+
# :conditions => String with comma-separated conditions (in MongoDB syntax), or Array of Strings
|
24
|
+
# :start => String or Integer (for year)
|
25
|
+
# :end => String or Integer (for year)
|
26
|
+
# :limit => String or Integer
|
27
|
+
#
|
28
|
+
# See Logworm::QueryBuilder
|
29
|
+
#
|
30
|
+
# Returns Hash with
|
31
|
+
# id ==> id of the query
|
32
|
+
# query_url ==> URL to GET information about the query
|
33
|
+
# results_url ==> URL to GET the results for the query
|
34
|
+
# created ==> First creation of the query
|
35
|
+
# updated ==> most recent update of the query and/or its results
|
36
|
+
# expires ==> until that datime, the query won't be rerun against the database
|
37
|
+
# execution_time ==> time in ms to run the query
|
38
|
+
# results ==> array of hashmaps. Each element corresponds to a log entry, with its fields
|
39
|
+
#
|
40
|
+
# raises Logworm::DatabaseException, Logworm::ForbiddenAccessException, Logworm::InvalidQueryException
|
41
|
+
# or just a regular Exception if it cannot find the URL to the logging database
|
42
|
+
###
|
43
|
+
def lw_query(logname, query = {})
|
44
|
+
db = Logworm::DB.from_config_or_die # Establish connection to DB
|
45
|
+
query = Logworm::QueryBuilder.new(query).to_json if query.is_a? Hash # Turn query into proper JSON string
|
46
|
+
query_data = db.query(logname, query) # POST to create query
|
47
|
+
db.results(query_data["results_uri"]) # GET from query's results uri
|
48
|
+
end
|
49
|
+
|
50
|
+
###
|
51
|
+
# Returns an array with information about the logging tables in the database
|
52
|
+
# Each element in the array has;
|
53
|
+
# :tablename => The name of the logging table
|
54
|
+
# :url => The URL for POSTing new log entries
|
55
|
+
# :last_write => Datetime of last entry
|
56
|
+
# :rows => Count of entries
|
57
|
+
#
|
58
|
+
# raises Logworm::DatabaseException, Logworm::ForbiddenAccessException, Logworm::InvalidQueryException
|
59
|
+
# or just a regular Exception if it cannot find the URL to the logging database
|
60
|
+
###
|
61
|
+
def lw_list_logs
|
62
|
+
db = Logworm::DB.from_config_or_die # Establish connection to DB
|
63
|
+
db.tables # Call tables command
|
64
|
+
end
|
data/logworm_amqp.gemspec
CHANGED
@@ -2,59 +2,63 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{logworm_amqp}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.9.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Pomelo, LLC"]
|
9
|
-
s.date = %q{2010-08-
|
10
|
-
s.description = %q{logworm logging
|
9
|
+
s.date = %q{2010-08-09}
|
10
|
+
s.description = %q{logworm - logging service}
|
11
11
|
s.email = %q{schapira@pomelollc.com}
|
12
|
-
s.
|
13
|
-
s.
|
12
|
+
s.executables = ["lw-compute", "lw-tail"]
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG", "bin/lw-compute", "bin/lw-tail", "lib/base/config.rb", "lib/base/db.rb", "lib/base/query_builder.rb", "lib/client/logger.rb", "lib/client/rack.rb", "lib/client/rails.rb", "lib/cmd/compute.rb", "lib/cmd/tail.rb", "lib/logworm_amqp.rb", "lib/logworm_utils.rb"]
|
14
|
+
s.files = ["CHANGELOG", "Manifest", "Rakefile", "bin/lw-compute", "bin/lw-tail", "lib/base/config.rb", "lib/base/db.rb", "lib/base/query_builder.rb", "lib/client/logger.rb", "lib/client/rack.rb", "lib/client/rails.rb", "lib/cmd/compute.rb", "lib/cmd/tail.rb", "lib/logworm_amqp.rb", "lib/logworm_utils.rb", "logworm_amqp.gemspec"]
|
14
15
|
s.homepage = %q{http://www.logworm.com}
|
15
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Logworm_amqp"
|
16
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Logworm_amqp"]
|
16
17
|
s.require_paths = ["lib"]
|
17
18
|
s.rubyforge_project = %q{logworm_amqp}
|
18
19
|
s.rubygems_version = %q{1.3.7}
|
19
|
-
s.summary = %q{logworm logging
|
20
|
+
s.summary = %q{logworm - logging service}
|
20
21
|
|
21
22
|
if s.respond_to? :specification_version then
|
22
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
24
|
s.specification_version = 3
|
24
25
|
|
25
26
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
+
s.add_runtime_dependency(%q<json>, [">= 1.4.3"])
|
28
|
+
s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
|
26
29
|
s.add_runtime_dependency(%q<memcache-client>, [">= 0"])
|
27
30
|
s.add_runtime_dependency(%q<hpricot>, [">= 0"])
|
28
31
|
s.add_runtime_dependency(%q<oauth>, [">= 0"])
|
29
32
|
s.add_runtime_dependency(%q<heroku>, [">= 0"])
|
30
|
-
s.
|
31
|
-
s.add_development_dependency(%q<
|
33
|
+
s.add_development_dependency(%q<json>, [">= 1.4.3"])
|
34
|
+
s.add_development_dependency(%q<ruby-hmac>, [">= 0"])
|
32
35
|
s.add_development_dependency(%q<hpricot>, [">= 0"])
|
33
36
|
s.add_development_dependency(%q<oauth>, [">= 0"])
|
34
37
|
s.add_development_dependency(%q<heroku>, [">= 0"])
|
35
|
-
s.add_development_dependency(%q<minion>, [">= 0.1.15"])
|
36
38
|
else
|
39
|
+
s.add_dependency(%q<json>, [">= 1.4.3"])
|
40
|
+
s.add_dependency(%q<ruby-hmac>, [">= 0"])
|
37
41
|
s.add_dependency(%q<memcache-client>, [">= 0"])
|
38
42
|
s.add_dependency(%q<hpricot>, [">= 0"])
|
39
43
|
s.add_dependency(%q<oauth>, [">= 0"])
|
40
44
|
s.add_dependency(%q<heroku>, [">= 0"])
|
41
|
-
s.add_dependency(%q<
|
42
|
-
s.add_dependency(%q<
|
45
|
+
s.add_dependency(%q<json>, [">= 1.4.3"])
|
46
|
+
s.add_dependency(%q<ruby-hmac>, [">= 0"])
|
43
47
|
s.add_dependency(%q<hpricot>, [">= 0"])
|
44
48
|
s.add_dependency(%q<oauth>, [">= 0"])
|
45
49
|
s.add_dependency(%q<heroku>, [">= 0"])
|
46
|
-
s.add_dependency(%q<minion>, [">= 0.1.15"])
|
47
50
|
end
|
48
51
|
else
|
52
|
+
s.add_dependency(%q<json>, [">= 1.4.3"])
|
53
|
+
s.add_dependency(%q<ruby-hmac>, [">= 0"])
|
49
54
|
s.add_dependency(%q<memcache-client>, [">= 0"])
|
50
55
|
s.add_dependency(%q<hpricot>, [">= 0"])
|
51
56
|
s.add_dependency(%q<oauth>, [">= 0"])
|
52
57
|
s.add_dependency(%q<heroku>, [">= 0"])
|
53
|
-
s.add_dependency(%q<
|
54
|
-
s.add_dependency(%q<
|
58
|
+
s.add_dependency(%q<json>, [">= 1.4.3"])
|
59
|
+
s.add_dependency(%q<ruby-hmac>, [">= 0"])
|
55
60
|
s.add_dependency(%q<hpricot>, [">= 0"])
|
56
61
|
s.add_dependency(%q<oauth>, [">= 0"])
|
57
62
|
s.add_dependency(%q<heroku>, [">= 0"])
|
58
|
-
s.add_dependency(%q<minion>, [">= 0.1.15"])
|
59
63
|
end
|
60
64
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logworm_amqp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 59
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 8
|
9
8
|
- 9
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.9.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pomelo, LLC
|
@@ -15,25 +15,27 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-09 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
22
|
+
name: json
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 1
|
30
30
|
segments:
|
31
|
-
-
|
32
|
-
|
31
|
+
- 1
|
32
|
+
- 4
|
33
|
+
- 3
|
34
|
+
version: 1.4.3
|
33
35
|
type: :runtime
|
34
36
|
version_requirements: *id001
|
35
37
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
38
|
+
name: ruby-hmac
|
37
39
|
prerelease: false
|
38
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
41
|
none: false
|
@@ -47,7 +49,7 @@ dependencies:
|
|
47
49
|
type: :runtime
|
48
50
|
version_requirements: *id002
|
49
51
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
52
|
+
name: memcache-client
|
51
53
|
prerelease: false
|
52
54
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
55
|
none: false
|
@@ -61,7 +63,7 @@ dependencies:
|
|
61
63
|
type: :runtime
|
62
64
|
version_requirements: *id003
|
63
65
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
66
|
+
name: hpricot
|
65
67
|
prerelease: false
|
66
68
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
69
|
none: false
|
@@ -75,23 +77,21 @@ dependencies:
|
|
75
77
|
type: :runtime
|
76
78
|
version_requirements: *id004
|
77
79
|
- !ruby/object:Gem::Dependency
|
78
|
-
name:
|
80
|
+
name: oauth
|
79
81
|
prerelease: false
|
80
82
|
requirement: &id005 !ruby/object:Gem::Requirement
|
81
83
|
none: false
|
82
84
|
requirements:
|
83
85
|
- - ">="
|
84
86
|
- !ruby/object:Gem::Version
|
85
|
-
hash:
|
87
|
+
hash: 3
|
86
88
|
segments:
|
87
89
|
- 0
|
88
|
-
|
89
|
-
- 15
|
90
|
-
version: 0.1.15
|
90
|
+
version: "0"
|
91
91
|
type: :runtime
|
92
92
|
version_requirements: *id005
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
94
|
+
name: heroku
|
95
95
|
prerelease: false
|
96
96
|
requirement: &id006 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
@@ -102,24 +102,26 @@ dependencies:
|
|
102
102
|
segments:
|
103
103
|
- 0
|
104
104
|
version: "0"
|
105
|
-
type: :
|
105
|
+
type: :runtime
|
106
106
|
version_requirements: *id006
|
107
107
|
- !ruby/object:Gem::Dependency
|
108
|
-
name:
|
108
|
+
name: json
|
109
109
|
prerelease: false
|
110
110
|
requirement: &id007 !ruby/object:Gem::Requirement
|
111
111
|
none: false
|
112
112
|
requirements:
|
113
113
|
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
hash:
|
115
|
+
hash: 1
|
116
116
|
segments:
|
117
|
-
-
|
118
|
-
|
117
|
+
- 1
|
118
|
+
- 4
|
119
|
+
- 3
|
120
|
+
version: 1.4.3
|
119
121
|
type: :development
|
120
122
|
version_requirements: *id007
|
121
123
|
- !ruby/object:Gem::Dependency
|
122
|
-
name:
|
124
|
+
name: ruby-hmac
|
123
125
|
prerelease: false
|
124
126
|
requirement: &id008 !ruby/object:Gem::Requirement
|
125
127
|
none: false
|
@@ -133,7 +135,7 @@ dependencies:
|
|
133
135
|
type: :development
|
134
136
|
version_requirements: *id008
|
135
137
|
- !ruby/object:Gem::Dependency
|
136
|
-
name:
|
138
|
+
name: hpricot
|
137
139
|
prerelease: false
|
138
140
|
requirement: &id009 !ruby/object:Gem::Requirement
|
139
141
|
none: false
|
@@ -147,49 +149,70 @@ dependencies:
|
|
147
149
|
type: :development
|
148
150
|
version_requirements: *id009
|
149
151
|
- !ruby/object:Gem::Dependency
|
150
|
-
name:
|
152
|
+
name: oauth
|
151
153
|
prerelease: false
|
152
154
|
requirement: &id010 !ruby/object:Gem::Requirement
|
153
155
|
none: false
|
154
156
|
requirements:
|
155
157
|
- - ">="
|
156
158
|
- !ruby/object:Gem::Version
|
157
|
-
hash:
|
159
|
+
hash: 3
|
158
160
|
segments:
|
159
161
|
- 0
|
160
|
-
|
161
|
-
- 15
|
162
|
-
version: 0.1.15
|
162
|
+
version: "0"
|
163
163
|
type: :development
|
164
164
|
version_requirements: *id010
|
165
|
-
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: heroku
|
167
|
+
prerelease: false
|
168
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
hash: 3
|
174
|
+
segments:
|
175
|
+
- 0
|
176
|
+
version: "0"
|
177
|
+
type: :development
|
178
|
+
version_requirements: *id011
|
179
|
+
description: logworm - logging service
|
166
180
|
email: schapira@pomelollc.com
|
167
|
-
executables:
|
168
|
-
|
181
|
+
executables:
|
182
|
+
- lw-compute
|
183
|
+
- lw-tail
|
169
184
|
extensions: []
|
170
185
|
|
171
186
|
extra_rdoc_files:
|
172
187
|
- CHANGELOG
|
173
|
-
-
|
188
|
+
- bin/lw-compute
|
189
|
+
- bin/lw-tail
|
174
190
|
- lib/base/config.rb
|
175
191
|
- lib/base/db.rb
|
176
192
|
- lib/base/query_builder.rb
|
193
|
+
- lib/client/logger.rb
|
194
|
+
- lib/client/rack.rb
|
195
|
+
- lib/client/rails.rb
|
196
|
+
- lib/cmd/compute.rb
|
197
|
+
- lib/cmd/tail.rb
|
177
198
|
- lib/logworm_amqp.rb
|
199
|
+
- lib/logworm_utils.rb
|
178
200
|
files:
|
179
201
|
- CHANGELOG
|
180
202
|
- Manifest
|
181
|
-
- README.md
|
182
203
|
- Rakefile
|
204
|
+
- bin/lw-compute
|
205
|
+
- bin/lw-tail
|
183
206
|
- lib/base/config.rb
|
184
207
|
- lib/base/db.rb
|
185
208
|
- lib/base/query_builder.rb
|
209
|
+
- lib/client/logger.rb
|
210
|
+
- lib/client/rack.rb
|
211
|
+
- lib/client/rails.rb
|
212
|
+
- lib/cmd/compute.rb
|
213
|
+
- lib/cmd/tail.rb
|
186
214
|
- lib/logworm_amqp.rb
|
187
|
-
-
|
188
|
-
- spec/builder_spec.rb
|
189
|
-
- spec/config_spec.rb
|
190
|
-
- spec/spec.opts
|
191
|
-
- spec/spec_helper.rb
|
192
|
-
- tests/builder_test.rb
|
215
|
+
- lib/logworm_utils.rb
|
193
216
|
- logworm_amqp.gemspec
|
194
217
|
has_rdoc: true
|
195
218
|
homepage: http://www.logworm.com
|
@@ -201,8 +224,6 @@ rdoc_options:
|
|
201
224
|
- --inline-source
|
202
225
|
- --title
|
203
226
|
- Logworm_amqp
|
204
|
-
- --main
|
205
|
-
- README.md
|
206
227
|
require_paths:
|
207
228
|
- lib
|
208
229
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -230,6 +251,6 @@ rubyforge_project: logworm_amqp
|
|
230
251
|
rubygems_version: 1.3.7
|
231
252
|
signing_key:
|
232
253
|
specification_version: 3
|
233
|
-
summary: logworm logging
|
254
|
+
summary: logworm - logging service
|
234
255
|
test_files: []
|
235
256
|
|