cloud-logger2 0.0.1 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d74cbdd792d1d9a439fce7a2015515ea0fa7abba
4
- data.tar.gz: 11b45dc691a968fd20d842fe77e94aefd75dbe5b
3
+ metadata.gz: 976c4cb162d82558b1e733859f16094bee2c01d3
4
+ data.tar.gz: 124b186464edd742265257f84dcab48cd5328196
5
5
  SHA512:
6
- metadata.gz: 6f6d59e20918f0ca85ba395ef63eb298f71bc1c46f63ab38faa1914bc7feea223b55a6eaf07d37977b77ef4e905772735a043be3c2d91737f41b125c7b1cc863
7
- data.tar.gz: 9eda548c46fd959c5b0a695cfb2ad492168908f7390ffb1370c418a36d6dbb31cbcc1b2047a44bc6b85d0ab24aaacedcfb024e83521edb2a7203b07535326822
6
+ metadata.gz: 286b0d4a82f885b10d04ff58d791553ef7c0e21b352720f79a2e01a2708f5995d98538bb56b8893f2b8c370273b43244eaea855af07c7ad0e628cc63a20bc601
7
+ data.tar.gz: ab21716ab5eca9a88deaed57b3929a1457eff21950d65f8949361ed33f8f07c1d1130bdcef9fbbb836cb3fb68d27746a0509aebc2311ff6f77a05010845b1557
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile CHANGED
@@ -11,4 +11,5 @@ group :development do
11
11
  gem "rspec", "> 2.3.0"
12
12
  gem "bundler", "> 1.0.0"
13
13
  gem "jeweler", ">= 1.6.4"
14
+ gem "simplecov", ">= 0"
14
15
  end
data/Rakefile ADDED
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "cloud-logger2"
18
+ gem.homepage = "http://github.com/ryan-mitchell/cloud-logger"
19
+ gem.license = "MIT"
20
+ gem.summary = "Simple Ruby interface to cloud logging services such as Loggly and Papertrail"
21
+ gem.description ="A simple Ruby interface to the APIs of various cloud logging services"
22
+ gem.email = "nadams@lynchmarks.com"
23
+ gem.authors = ["Ryan Mitchell"]
24
+ gem.version = "0.0.3"
25
+ # dependencies defined in Gemfile
26
+ end
27
+ Jeweler::RubygemsDotOrgTasks.new
28
+
29
+ require 'rspec/core'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec) do |spec|
32
+ spec.pattern = FileList['spec/**/*_spec.rb']
33
+ end
34
+
35
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
36
+ spec.pattern = 'spec/**/*_spec.rb'
37
+ spec.rcov = true
38
+ end
39
+
40
+ task :default => :spec
41
+
42
+ require 'rake/rdoctask'
43
+ Rake::RDocTask.new do |rdoc|
44
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
45
+
46
+ rdoc.rdoc_dir = 'rdoc'
47
+ rdoc.title = "cloud-logger2 #{version}"
48
+ rdoc.rdoc_files.include('README*')
49
+ rdoc.rdoc_files.include('lib/**/*.rb')
50
+ end
@@ -5,26 +5,34 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "cloud-logger2"
8
- s.version = "0.0.1"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ryan Mitchell"]
12
12
  s.date = "2011-09-22"
13
13
  s.description = "A simple Ruby interface to the APIs of various cloud logging services"
14
- s.email = "mitchellryanj@gmail.com"
14
+ s.email = "nadams@lynchmarks.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
+ ".document",
21
+ ".rspec",
20
22
  "Gemfile",
21
23
  "LICENSE.txt",
22
24
  "README.rdoc",
25
+ "Rakefile",
23
26
  "cloud-logger2.gemspec",
24
27
  "lib/base.rb",
25
- "lib/cloud-logger2.rb",
28
+ "lib/cloud-logger.rb",
26
29
  "lib/event.rb",
27
30
  "lib/loggly.rb",
31
+ "lib/papertrail.rb",
32
+ "spec/event_spec.rb",
33
+ "spec/loggly_spec.rb",
34
+ "spec/papertrail_spec.rb",
35
+ "spec/spec_helper.rb"
28
36
  ]
29
37
  s.homepage = "http://github.com/ryan-mitchell/cloud-logger"
30
38
  s.licenses = ["MIT"]
@@ -40,20 +48,20 @@ Gem::Specification.new do |s|
40
48
  s.add_development_dependency(%q<rspec>, ["> 2.3.0"])
41
49
  s.add_development_dependency(%q<bundler>, ["> 1.0.0"])
42
50
  s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
43
- s.add_development_dependency(%q<rcov>, [">= 0"])
51
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
44
52
  else
45
53
  s.add_dependency(%q<rest-client>, [">= 1.6.3"])
46
54
  s.add_dependency(%q<rspec>, ["> 2.3.0"])
47
55
  s.add_dependency(%q<bundler>, ["> 1.0.0"])
48
56
  s.add_dependency(%q<jeweler>, [">= 1.6.4"])
49
- s.add_dependency(%q<rcov>, [">= 0"])
57
+ s.add_dependency(%q<simplecov>, [">= 0"])
50
58
  end
51
59
  else
52
60
  s.add_dependency(%q<rest-client>, [">= 1.6.3"])
53
61
  s.add_dependency(%q<rspec>, ["> 2.3.0"])
54
62
  s.add_dependency(%q<bundler>, ["> 1.0.0"])
55
63
  s.add_dependency(%q<jeweler>, [">= 1.6.4"])
56
- s.add_dependency(%q<rcov>, [">= 0"])
64
+ s.add_dependency(%q<simplecov>, [">= 0"])
57
65
  end
58
66
  end
59
67
 
@@ -2,3 +2,4 @@ require 'rest_client'
2
2
  require 'base'
3
3
  require 'event'
4
4
  require 'loggly'
5
+ require 'papertrail'
data/lib/event.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'date'
2
2
 
3
- module CloudLogger2
3
+ module CloudLogger
4
4
 
5
5
  class Event
6
6
 
data/lib/loggly.rb CHANGED
@@ -1,4 +1,5 @@
1
- module Cloudlogger2
1
+
2
+ module CloudLogger
2
3
 
3
4
  class Loggly < Base
4
5
 
@@ -19,12 +20,12 @@ module Cloudlogger2
19
20
  end
20
21
 
21
22
  def search(query)
22
- raw_response = RestClient.get("https://#{@user}:#{@pass}@#{@subdomain}.loggly.com/apiv2/search", {:params => {:q => query}})
23
+ raw_response = RestClient.get("https://#{@user}:#{@pass}@#{@subdomain}.loggly.com/api/search", {:params => {:q => query}})
23
24
  result = JSON.parse(raw_response)['data'].map do |log_entry|
24
- Cloudlogger2::Event.new(log_entry['text'], log_entry['timestamp'])
25
+ CloudLogger::Event.new(log_entry['text'], log_entry['timestamp'])
25
26
  end
26
27
  yield result if block_given?
27
28
  result
28
29
  end
29
30
  end
30
- end
31
+ end
data/lib/papertrail.rb ADDED
@@ -0,0 +1,23 @@
1
+ module CloudLogger
2
+
3
+ class Papertrail < Base
4
+
5
+ def initialize(options)
6
+ @user = options[:user]
7
+ @pass = options[:pass]
8
+ end
9
+
10
+ def log(message)
11
+ raise "sending logs is not supported for the Papertrail driver"
12
+ end
13
+
14
+ def search(query)
15
+ raw_response = RestClient.get("https://#{@user}:#{@pass}@papertrailapp.com/api/vi/events/search.json", {:params => {:q => query}})
16
+ result = JSON.parse(raw_response)['events'].map do |log_entry|
17
+ CloudLogger::Event.new(log_entry['message'], log_entry['received_at'])
18
+ end
19
+ yield result if block_given?
20
+ result
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe CloudLogger::Event do
4
+
5
+ it "should construct a valid event from a DateTime instance" do
6
+ time = DateTime.now
7
+ event = CloudLogger::Event.new('test', time)
8
+ event.timestamp.should be_instance_of DateTime
9
+ end
10
+
11
+ it "should construct a valid event from a Time instance" do
12
+ time = Time.now
13
+ event = CloudLogger::Event.new('test', time)
14
+ event.timestamp.should be_instance_of DateTime
15
+ end
16
+
17
+ it "should construct a valid event from a Date instance" do
18
+ time = Date.today
19
+ event = CloudLogger::Event.new('test', time)
20
+ event.timestamp.should be_instance_of DateTime
21
+ end
22
+
23
+ it "should construct a valid event from a string representation of a date" do
24
+ time = "2011-09-21T18:48:55.151Z"
25
+ event = CloudLogger::Event.new('test', time)
26
+ event.timestamp.should be_instance_of DateTime
27
+ end
28
+
29
+ it "should construct a valid event from a Unix timestamp" do
30
+ time = 1316645975
31
+ event = CloudLogger::Event.new('test', time)
32
+ event.timestamp.should be_instance_of DateTime
33
+ end
34
+ end
@@ -0,0 +1,109 @@
1
+ require 'spec_helper'
2
+
3
+ describe CloudLogger::Loggly do
4
+
5
+ before(:all) do
6
+ @test_subdomain = 'example'
7
+ @test_user = 'user'
8
+ @test_pass = 'pass'
9
+ @test_key = '123456'
10
+ @loggly = CloudLogger::Loggly.new(
11
+ :subdomain => @test_subdomain,
12
+ :user => @test_user,
13
+ :pass => @test_pass,
14
+ :key => @test_key
15
+ )
16
+ end
17
+
18
+ describe "#search" do
19
+
20
+ before(:each) do
21
+ RestClient.stub!(:get)
22
+ Kernel.stub!(:print)
23
+ @test_response = JSON.generate({ :data => [ { :timestamp => "2011-09-21T18:48:55.151Z", :text => "Test Data" } ] })
24
+
25
+ end
26
+
27
+ it "should generate an appropriate RestClient GET" do
28
+
29
+ search_string = "search string"
30
+ RestClient.should_receive(:get).with(
31
+ "https://#{@test_user}:#{@test_pass}@#{@test_subdomain}.loggly.com/api/search",
32
+ {:params => {:q => search_string}}
33
+ ).and_return(@test_response)
34
+ @loggly.search(search_string)
35
+ end
36
+
37
+ it "should convert the returned text to a CloudLogger::Event" do
38
+ RestClient.should_receive(:get).and_return(@test_response)
39
+ @loggly.search("Test Data") do |data|
40
+ data.first.should be_instance_of CloudLogger::Event
41
+ data.first.text.should == "Test Data"
42
+ end
43
+ end
44
+
45
+ it "should execute the callback if one is provided" do
46
+
47
+ Kernel.should_receive(:print).with an_instance_of Array
48
+ RestClient.should_receive(:get).and_return(@test_response)
49
+
50
+ @loggly.search('anything') do |data|
51
+ Kernel.print data
52
+ data.first.should be_instance_of CloudLogger::Event
53
+ end
54
+ end
55
+
56
+ it "should return the response if no callback is provided" do
57
+
58
+ RestClient.should_receive(:get).and_return(@test_response)
59
+ @loggly.search('anything').should_not be_nil
60
+ end
61
+ end
62
+
63
+ describe "#log" do
64
+
65
+ before(:each) do
66
+ RestClient.stub!(:post)
67
+ end
68
+
69
+ it "should generate an appropriate RestClient POST with a raw payload" do
70
+
71
+ log_string = "this is a test log"
72
+ RestClient.should_receive(:post).with(
73
+ "https://logs.loggly.com/inputs/%s" % @test_key,
74
+ log_string
75
+ )
76
+
77
+ @loggly.log(log_string)
78
+ end
79
+
80
+ it "should generate an appropriate RestClient POST with parameters" do
81
+
82
+ log_parameters = { :time => 123456, :type => 'foo', :logger => 'bar' }
83
+ RestClient.should_receive(:post).with(
84
+ "https://logs.loggly.com/inputs/%s" % @test_key,
85
+ log_parameters
86
+ )
87
+
88
+ @loggly.log(log_parameters)
89
+ end
90
+
91
+ it "should use the EC2 host if the EC2 flag is set" do
92
+
93
+ log_string = "this is a test log"
94
+ ec2logger = CloudLogger::Loggly.new(
95
+ :subdomain => @test_subdomain,
96
+ :user => @test_user,
97
+ :pass => @test_pass,
98
+ :key => @test_key,
99
+ :ec2 => true
100
+ )
101
+ RestClient.should_receive(:post).with(
102
+ "https://ec2.logs.loggly.com/inputs/%s" % @test_key,
103
+ log_string
104
+ )
105
+
106
+ ec2logger.log(log_string)
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe CloudLogger::Papertrail do
4
+
5
+ before(:all) do
6
+ @test_user = 'user'
7
+ @test_pass = 'pass'
8
+ @logger = CloudLogger::Papertrail.new(
9
+ :user => @test_user,
10
+ :pass => @test_pass,
11
+ )
12
+ end
13
+
14
+ describe "#search" do
15
+
16
+ before(:each) do
17
+ RestClient.stub!(:get)
18
+ Kernel.stub!(:print)
19
+ @test_response = JSON.generate({ :events => [ { :received_at => "2011-09-21T18:48:55.15-07:00", :message => "Test Data" } ] })
20
+
21
+ end
22
+
23
+ it "should generate an appropriate RestClient GET" do
24
+
25
+ search_string = "search string"
26
+ RestClient.should_receive(:get).with(
27
+ "https://#{@test_user}:#{@test_pass}@papertrailapp.com/api/vi/events/search.json",
28
+ {:params => {:q => search_string}}
29
+ ).and_return(@test_response)
30
+ @logger.search(search_string)
31
+ end
32
+
33
+ it "should convert the returned text to a CloudLogger::Event" do
34
+ RestClient.should_receive(:get).and_return(@test_response)
35
+ @logger.search("Test Data") do |data|
36
+ data.first.should be_instance_of CloudLogger::Event
37
+ data.first.text.should == "Test Data"
38
+ end
39
+ end
40
+
41
+ it "should execute the callback if one is provided" do
42
+
43
+ Kernel.should_receive(:print).with an_instance_of Array
44
+ RestClient.should_receive(:get).and_return(@test_response)
45
+
46
+ @logger.search('anything') do |data|
47
+ Kernel.print data
48
+ data.first.should be_instance_of CloudLogger::Event
49
+ end
50
+ end
51
+
52
+ it "should return the response if no callback is provided" do
53
+
54
+ RestClient.should_receive(:get).and_return(@test_response)
55
+ @logger.search('anything').should_not be_nil
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,13 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'cloud-logger'
5
+ require 'json'
6
+
7
+ # Requires supporting files with custom matchers and macros, etc,
8
+ # in ./support/ and its subdirectories.
9
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
+
11
+ RSpec.configure do |config|
12
+
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud-logger2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Mitchell
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.6.4
69
69
  - !ruby/object:Gem::Dependency
70
- name: rcov
70
+ name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,21 +81,29 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: A simple Ruby interface to the APIs of various cloud logging services
84
- email: mitchellryanj@gmail.com
84
+ email: nadams@lynchmarks.com
85
85
  executables: []
86
86
  extensions: []
87
87
  extra_rdoc_files:
88
88
  - LICENSE.txt
89
89
  - README.rdoc
90
90
  files:
91
+ - ".document"
92
+ - ".rspec"
91
93
  - Gemfile
92
94
  - LICENSE.txt
93
95
  - README.rdoc
96
+ - Rakefile
94
97
  - cloud-logger2.gemspec
95
98
  - lib/base.rb
96
- - lib/cloud-logger2.rb
99
+ - lib/cloud-logger.rb
97
100
  - lib/event.rb
98
101
  - lib/loggly.rb
102
+ - lib/papertrail.rb
103
+ - spec/event_spec.rb
104
+ - spec/loggly_spec.rb
105
+ - spec/papertrail_spec.rb
106
+ - spec/spec_helper.rb
99
107
  homepage: http://github.com/ryan-mitchell/cloud-logger
100
108
  licenses:
101
109
  - MIT