sidekick-client 0.2.4 → 0.2.5

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/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