sidekick-client 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,6 +1,7 @@
1
1
  = sidekick-client
2
2
 
3
- Description goes here.
3
+ Single-threaded RabbitMQ reader that subscribes on a single queue. The
4
+ queue is configured via a sidekick.conf file. See example in config/
4
5
 
5
6
  == Note on Patches/Pull Requests
6
7
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
@@ -0,0 +1,8 @@
1
+ ---
2
+ :broker:
3
+ :ip: 127.0.0.1
4
+ :port: 5672
5
+ :queue_name: vamp_dev
6
+ :exchange: amq.direct
7
+ :routing_key: vamp_dev
8
+ :timeout: 5
@@ -1,33 +1,49 @@
1
+ require 'rubygems'
1
2
  require 'yaml'
2
3
  require 'logger'
3
4
  require "uuidtools"
4
5
  require "#{File.dirname(__FILE__)}/../shared/sidekick_logger"
5
6
  require "#{File.dirname(__FILE__)}/../shared/sidekick_queue_publisher"
6
7
 
7
- SIDEKICK_CONFIG = "/etc/vamp/sidekick.conf" unless defined?(SIDEKICK_CONFIG)
8
- DEFAULT_LOG_LOCATION = "/var/log/cft/sidekick/sidekick_client.log"
9
- # TODO: this client must be used from within a rails application right now
10
- # because it relies on RAILS_ROOT to find its config file
11
- #
12
8
  class SidekickClient
9
+
10
+ class << self
11
+ attr_accessor :config
12
+ attr_accessor :log
13
+ end
14
+
15
+ self.log = "/var/log/cft/sidekick/sidekick_client.log"
16
+
13
17
  attr_reader :logger
14
18
  attr_reader :config
15
19
 
16
20
  def initialize(config_override={})
17
- if File.exists? SIDEKICK_CONFIG
18
- @config ||= YAML.load_file(SIDEKICK_CONFIG).with_indifferent_access.merge(config_override)
21
+ load_config(config_override)
22
+ @logger.info "Initialized SidekickClient with config #{@config.inspect}"
23
+ @qconn = SidekickQueuePublisher.new(@config, @logger)
24
+ end
25
+
26
+ def load_config(config_override)
27
+ if SidekickClient.config && File.exists?(SidekickClient.config)
28
+ @config ||= YAML.load_file(SidekickClient.config).with_indifferent_access.merge(config_override)
29
+ elsif SidekickClient.config
30
+ raise LoadError, "Missing configuration: #{SidekickClient.config}"
19
31
  else
20
- @config ||= config_override.with_indifferent_access
32
+ warn "Set the sidekick config path using SidekickClient.config='/path/to/sidekick.conf'"
21
33
  end
34
+ @config ||= config_override.with_indifferent_access
35
+ @config[:sidekick_log_file] ||= SidekickClient.log
36
+
37
+ # If STDOUT is specified as a value use the actual stream to log to STDOUT
38
+ if @config[:sidekick_log_file] == 'STDOUT'
39
+ @config[:sidekick_log_file] = Kernel.const_get('STDOUT')
40
+ end
41
+
42
+ FileUtils.mkdir_p(File.dirname(@config[:sidekick_log_file])) if @config[:sidekick_log_file].is_a?(String)
43
+ @logger = SidekickLogger.new(@config[:sidekick_log_file])
22
44
 
23
- @config[:sidekick_log_file] ||= DEFAULT_LOG_LOCATION
24
- @logger = SidekickLogger.new(@config[:sidekick_log_file].to_s.gsub("sidekick.log","sidekick_client.log"))
25
-
26
45
  @config[:exchange] ||= "amq.direct"
27
-
28
- @logger.info "Initialized SidekickClient with config #{@config.inspect}"
29
- @qconn = SidekickQueuePublisher.new(@config, @logger)
30
- end
46
+ end
31
47
 
32
48
  def self.send_and_disconnect(cmd, args={}, queue_name=nil)
33
49
  SidekickClient.new.send_and_disconnect(cmd,args,queue_name)
@@ -6,6 +6,12 @@ class SidekickQueuePublisher
6
6
  def initialize(config, logger)
7
7
  @logger = logger
8
8
  @config = config.with_indifferent_access
9
+
10
+ # Deprecations section
11
+ if @config[:brokers]
12
+ raise SyntaxError, "ERROR: 'brokers' is a deprecated config value. Please use something like:\n:broker:\n :ip: 127.0.0.1\n :port: 1234"
13
+ end
14
+
9
15
  end
10
16
 
11
17
  # Publish a message using a given routing key
@@ -75,7 +81,8 @@ class SidekickQueuePublisher
75
81
  end
76
82
 
77
83
  def init_bunny_connection(temp_reply_queue_name=nil)
78
- @broker = @config[:brokers].first
84
+ @broker = @config[:broker]
85
+
79
86
  logger.info "Establishing connection to RabbitMQ broker #{@broker.inspect}."
80
87
  @b = Bunny.new(:host => (@broker[0] || "localhost"), :port => (@broker[1] || 5672), :timeout => @config[:timeout])
81
88
  @b.start
@@ -90,4 +97,4 @@ class SidekickQueuePublisher
90
97
  logger.log_connection_error_and_sleep(e)
91
98
  retry
92
99
  end
93
- end
100
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sidekick-client}
8
- s.version = "0.2.4"
8
+ s.version = "0.2.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["yan"]
12
- s.date = %q{2010-04-22}
12
+ s.date = %q{2011-11-02}
13
13
  s.email = %q{yan@pritzker.ws}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  "README.rdoc",
24
24
  "Rakefile",
25
25
  "VERSION",
26
+ "config/example_sidekick.conf",
26
27
  "lib/ext/README",
27
28
  "lib/ext/bunny-0.6.0/LICENSE",
28
29
  "lib/ext/bunny-0.6.0/README.rdoc",
@@ -110,7 +111,7 @@ Gem::Specification.new do |s|
110
111
  s.homepage = %q{http://github.com/cohesive/sidekick-client}
111
112
  s.rdoc_options = ["--charset=UTF-8"]
112
113
  s.require_paths = ["lib"]
113
- s.rubygems_version = %q{1.3.5}
114
+ s.rubygems_version = %q{1.3.6}
114
115
  s.summary = %q{RabbitMQ client specific to ESOD's Sidekick server}
115
116
  s.test_files = [
116
117
  "test/helper.rb",
@@ -1,14 +1,29 @@
1
+ $: << File.dirname(__FILE__)
1
2
  require 'helper'
2
3
 
4
+
3
5
  class TestSidekickClient < Test::Unit::TestCase
4
- should "instantiate" do
5
- SidekickClient.new
6
- end
7
-
8
- should "use config override" do
9
- expected_config = {:foo => :bar}
6
+ context "sidekick client" do
7
+ setup do
8
+ SidekickClient.log = "STDOUT"
9
+ end
10
+
11
+ should "instantiate" do
12
+ SidekickClient.new
13
+ end
10
14
 
11
- client = SidekickClient.new(expected_config)
12
- assert_equal :bar, client.config[:foo]
15
+ should "use config override" do
16
+ expected_config = {:foo => :bar}
17
+
18
+ client = SidekickClient.new(expected_config)
19
+ assert_equal :bar, client.config[:foo]
20
+ end
21
+
22
+ should "warn about missing config file" do
23
+ assert_raise(LoadError) do
24
+ SidekickClient.config = "/foo/bar/doesnotexist"
25
+ SidekickClient.new
26
+ end
27
+ end
13
28
  end
14
29
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekick-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 5
9
+ version: 0.2.5
5
10
  platform: ruby
6
11
  authors:
7
12
  - yan
@@ -9,19 +14,21 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-04-22 00:00:00 -07:00
17
+ date: 2011-11-02 00:00:00 -05:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: shoulda
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
23
29
  version: "0"
24
- version:
30
+ type: :development
31
+ version_requirements: *id001
25
32
  description:
26
33
  email: yan@pritzker.ws
27
34
  executables: []
@@ -39,6 +46,7 @@ files:
39
46
  - README.rdoc
40
47
  - Rakefile
41
48
  - VERSION
49
+ - config/example_sidekick.conf
42
50
  - lib/ext/README
43
51
  - lib/ext/bunny-0.6.0/LICENSE
44
52
  - lib/ext/bunny-0.6.0/README.rdoc
@@ -135,18 +143,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
143
  requirements:
136
144
  - - ">="
137
145
  - !ruby/object:Gem::Version
146
+ segments:
147
+ - 0
138
148
  version: "0"
139
- version:
140
149
  required_rubygems_version: !ruby/object:Gem::Requirement
141
150
  requirements:
142
151
  - - ">="
143
152
  - !ruby/object:Gem::Version
153
+ segments:
154
+ - 0
144
155
  version: "0"
145
- version:
146
156
  requirements: []
147
157
 
148
158
  rubyforge_project:
149
- rubygems_version: 1.3.5
159
+ rubygems_version: 1.3.6
150
160
  signing_key:
151
161
  specification_version: 3
152
162
  summary: RabbitMQ client specific to ESOD's Sidekick server