logworm 0.7.6 → 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ v0.7.7
2
+ DB.config now receives an optional app parameter, for the cases where you want to call command-line tools from a directory other than the app's directory... or when you have more than one Heroku remote/app from the same directory
3
+
1
4
  v0.7.6
2
5
  QueryBuilder now allows Time objects as arguments for timeframe
3
6
 
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'echoe'
2
- Echoe.new('logworm', '0.7.6') do |p|
2
+ Echoe.new('logworm', '0.7.7') do |p|
3
3
  p.description = "logworm logging tool"
4
4
  p.url = "http://www.logworm.com"
5
5
  p.author = "Pomelo, LLC"
data/lib/base/config.rb CHANGED
@@ -10,12 +10,15 @@ module Logworm
10
10
  FILENAME = ".logworm"
11
11
 
12
12
  def initialize
13
- read
13
+ reset
14
14
  end
15
-
16
- def read
15
+
16
+ def reset
17
17
  @file_found = false
18
18
  @url = nil
19
+ end
20
+
21
+ def read
19
22
  begin
20
23
  f = File.new("./" + FILENAME, 'r')
21
24
  @url = f.readline.strip
@@ -30,7 +33,7 @@ module Logworm
30
33
  end
31
34
 
32
35
  def file_found?
33
- @file_found and @url
36
+ @file_found and (!@url.nil? and @url != "")
34
37
  end
35
38
 
36
39
  def save(url)
data/lib/base/db.rb CHANGED
@@ -27,24 +27,31 @@ module Logworm
27
27
  DB.new(DB.make_url(host, consumer_key, consumer_secret, token, token_secret))
28
28
  end
29
29
 
30
- def self.from_config
31
- # Try with URL from the environment
30
+ def self.from_config(app = nil)
31
+ # Try with URL from the environment. This will certainly be the case when running on Heroku, in production.
32
32
  return DB.new(ENV['LOGWORM_URL']) if ENV['LOGWORM_URL'] and DB.parse_url(ENV['LOGWORM_URL'])
33
33
 
34
- # Try with configuration file
34
+ # If no env. found, try with configuration file, unless app specified
35
35
  config = Logworm::Config.instance
36
- return DB.new(config.url) if config.file_found? and DB.parse_url(config.url)
36
+ config.read
37
+ unless app
38
+ return DB.new(config.url) if config.file_found? and DB.parse_url(config.url)
39
+ end
37
40
 
38
41
  # Try with Heroku configuration otherwise
39
- config_vars = %x[heroku config --long] || ""
42
+ cmd = "heroku config --long #{app ? " --app #{app}" : ""}"
43
+ config_vars = %x[#{cmd}] || ""
40
44
  m = config_vars.match(Regexp.new("LOGWORM_URL\\s+=>\\s+([^\\n]+)"))
41
- config.save(m[1]) and return DB.new(m[1]) if m and DB.parse_url(m[1])
45
+ if m and DB.parse_url(m[1])
46
+ config.save(m[1]) unless (config.file_found? and app) # Do not overwrite if --app is provided
47
+ return DB.new(m[1])
48
+ end
42
49
 
43
50
  nil
44
51
  end
45
52
 
46
- def self.from_config_or_die
47
- db = self.from_config
53
+ def self.from_config_or_die(app = nil)
54
+ db = self.from_config(app)
48
55
  raise "The application is not properly configured. Either use 'heroku addon:add' to add logworm to your app, or save your project's credentials into the .logworm file" unless db
49
56
  db
50
57
  end
data/logworm.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{logworm}
5
- s.version = "0.7.6"
5
+ s.version = "0.7.7"
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-04-26}
9
+ s.date = %q{2010-06-24}
10
10
  s.description = %q{logworm logging tool}
11
11
  s.email = %q{schapira@pomelollc.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "README", "lib/base/config.rb", "lib/base/db.rb", "lib/base/query_builder.rb", "lib/logworm.rb"]
data/spec/base_spec.rb CHANGED
@@ -7,6 +7,11 @@ $: << File.dirname(__FILE__) + '/../lib'
7
7
  require 'logworm.rb'
8
8
 
9
9
  describe Logworm::DB, " initialization" do
10
+ before do
11
+ File.delete(".logworm") if File.exist?(".logworm")
12
+ Logworm::Config.instance.reset
13
+ end
14
+
10
15
  it "should only accept proper URLs" do
11
16
  lambda {Logworm::DB.new('')}.should raise_exception(Logworm::ForbiddenAccessException)
12
17
  lambda {Logworm::DB.new('http://www.test.com')}.should raise_exception(Logworm::ForbiddenAccessException)
@@ -26,8 +31,50 @@ describe Logworm::DB, " initialization" do
26
31
  db.token_secret.should == "d"
27
32
  end
28
33
 
29
- it "should be able to read its configuration from a file"
30
- it "should be able to read its configuration from the current Heroku application"
34
+ it "should be able to read its configuration from a file" do
35
+ File.open(".logworm", "w") do |f|
36
+ f.puts 'logworm://a:b@localhost:9401/c/d/'
37
+ end
38
+ db = Logworm::DB.from_config
39
+ db.host.should == "localhost:9401"
40
+ db.consumer_key.should == "a"
41
+ db.consumer_secret.should == "b"
42
+ db.token.should == "c"
43
+ db.token_secret.should == "d"
44
+ end
45
+
46
+ it "should fail if no logworm file (and no current Heroku application)" do
47
+ db = Logworm::DB.from_config
48
+ db.should == nil
49
+ end
50
+
51
+ # Note that this will fail unless it's run from the command line!
52
+ it "should not be nil if we pass a proper app parameter" do
53
+ db = Logworm::DB.from_config("lw-client")
54
+ db.should_not == nil
55
+ db.host.should == "db.logworm.com"
56
+ end
57
+
58
+ # Note that this will fail unless it's run from the command line!
59
+ it "should not use a config file if app is passed" do
60
+ File.open(".logworm", "w") do |f|
61
+ f.puts 'logworm://a:b@xxx:9401/c/d/'
62
+ end
63
+ db = Logworm::DB.from_config("lw-client")
64
+ db.host.should == "db.logworm.com" # The one from the app, not the config file
65
+ end
66
+
67
+ # Note that this will fail unless it's run from the command line!
68
+ it "should not overwrite a config file if app is passed" do
69
+ File.open(".logworm", "w") do |f|
70
+ f.puts 'logworm://a:b@xxx:9401/c/d/'
71
+ end
72
+
73
+ db = Logworm::DB.from_config("lw-client")
74
+ Logworm::Config.instance.reset
75
+ Logworm::Config.instance.read
76
+ Logworm::Config.instance.url.should == 'logworm://a:b@xxx:9401/c/d/'
77
+ end
31
78
 
32
79
  end
33
80
 
@@ -59,7 +106,7 @@ describe Logworm::DB, " functioning" do
59
106
 
60
107
  it "should just parse and return the results of the call to query" do
61
108
  return_body = {"id" => 10, "query" => "q", "self_uri" => "/queries/10", "results_uri" => "/queries/10/results"}
62
- stub_request(:post, "#{host}/queries").with(:body => "table=table1&query=q").to_return(:body => return_body.to_json)
109
+ stub_request(:post, "#{host}/queries").with(:body => "query=q&table=table1").to_return(:body => return_body.to_json)
63
110
  @db.query("table1", "q").should == return_body
64
111
  end
65
112
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 7
8
- - 6
9
- version: 0.7.6
8
+ - 7
9
+ version: 0.7.7
10
10
  platform: ruby
11
11
  authors:
12
12
  - Pomelo, LLC
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-26 00:00:00 -04:00
17
+ date: 2010-06-24 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency