resque-bus 0.3.2 → 0.3.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.
data/lib/resque-bus.rb CHANGED
@@ -146,6 +146,17 @@ module ResqueBus
146
146
  I18n.locale = original_locale unless original_locale == false
147
147
  Time.zone = original_timezone unless original_timezone == false
148
148
  end
149
+
150
+ def before_publish=(proc)
151
+ @before_publish_callback = proc
152
+ end
153
+
154
+ def before_publish_callback(attributes)
155
+ if @before_publish_callback
156
+ @before_publish_callback.call(attributes)
157
+ end
158
+ end
159
+
149
160
 
150
161
  def publish_metadata(event_type, attributes={})
151
162
  # TODO: "bus_app_key" => application.app_key ?
@@ -154,7 +165,9 @@ module ResqueBus
154
165
  bus_attr["bus_app_hostname"] = hostname
155
166
  bus_attr["bus_locale"] = I18n.locale.to_s if defined?(I18n) && I18n.respond_to?(:locale) && I18n.locale
156
167
  bus_attr["bus_timezone"] = Time.zone.name if defined?(Time) && Time.respond_to?(:zone) && Time.zone
157
- bus_attr.merge(attributes || {})
168
+ out = bus_attr.merge(attributes || {})
169
+ ResqueBus.before_publish_callback(out)
170
+ out
158
171
  end
159
172
 
160
173
  def generate_uuid
@@ -224,6 +237,7 @@ module ResqueBus
224
237
  @dispatcher = nil
225
238
  @default_app_key = nil
226
239
  @default_queue = nil
240
+ @before_publish_callback = nil
227
241
  end
228
242
 
229
243
  def incoming_queue
@@ -1,5 +1,5 @@
1
1
  module Resque
2
2
  module Bus
3
- VERSION = "0.3.2"
3
+ VERSION = "0.3.3"
4
4
  end
5
5
  end
data/spec/driver_spec.rb CHANGED
@@ -80,20 +80,11 @@ module ResqueBus
80
80
 
81
81
  hash = JSON.parse(ResqueBus.redis.lpop("queue:default"))
82
82
  hash["class"].should == "::ResqueBus::Rider"
83
- hash["args"][0].should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event5", "bus_rider_queue" => "default"}.merge(bus_attrs)
84
- first = hash["args"][0]["bus_rider_sub_key"]
85
-
83
+ hash["args"][0].should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event[45]", "bus_rider_queue" => "default"}.merge(bus_attrs)
84
+
86
85
  hash = JSON.parse(ResqueBus.redis.lpop("queue:default"))
87
86
  hash["class"].should == "::ResqueBus::Rider"
88
- hash["args"][0].should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event[45]", "bus_rider_queue" => "default"}.merge(bus_attrs)
89
- second= hash["args"][0]["bus_rider_sub_key"]
90
-
91
- if first == "event[45]"
92
- second.should == "event5"
93
- else
94
- first.should == "event5"
95
- second.should == "event[45]"
96
- end
87
+ hash["args"][0].should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event5", "bus_rider_queue" => "default"}.merge(bus_attrs)
97
88
  end
98
89
  end
99
90
  end
data/spec/publish_spec.rb CHANGED
@@ -44,16 +44,37 @@ describe "Publishing an event" do
44
44
  hash["args"].should == [ {"bus_event_type" => event_name, "two"=>"here", "one"=>1}.merge(bus_attrs).merge("bus_id" => 'app-given') ]
45
45
  end
46
46
 
47
+ it "should add metadata via callback" do
48
+ myval = 0
49
+ ResqueBus.before_publish = lambda { |att|
50
+ att["mine"] = 4
51
+ myval += 1
52
+ }
47
53
 
54
+ hash = {:one => 1, "two" => "here", "bus_id" => "app-given" }
55
+ event_name = "event_name"
56
+
57
+ val = ResqueBus.redis.lpop("queue:resquebus_incoming")
58
+ val.should == nil
59
+
60
+ ResqueBus.publish(event_name, hash)
61
+
62
+
63
+ val = ResqueBus.redis.lpop("queue:resquebus_incoming")
64
+ hash = JSON.parse(val)
65
+ att = hash["args"].first
66
+ att["mine"].should == 4
67
+ myval.should == 1
68
+ end
48
69
 
49
70
  it "should set the timezone and locale if available" do
50
71
  defined?(I18n).should be_nil
51
72
  Time.respond_to?(:zone).should be_false
52
73
 
53
74
  stub_const("I18n", Class.new)
54
- I18n.should_receive(:locale).and_return("jp")
75
+ I18n.stub(:locale).and_return("jp")
55
76
 
56
- Time.should_receive(:zone).and_return(double('zone', :name => "EST"))
77
+ Time.stub(:zone).and_return(double('zone', :name => "EST"))
57
78
 
58
79
  hash = {:one => 1, "two" => "here", "bus_id" => "app-given" }
59
80
  event_name = "event_name"
@@ -190,22 +190,22 @@ module ResqueBus
190
190
 
191
191
  hash = JSON.parse(ResqueBus.redis.lpop("queue:myqueue"))
192
192
  hash["class"].should == "SubscriberTest1"
193
- hash["args"].should == [ {"bus_rider_app_key"=>"my_thing", "bus_rider_sub_key"=>"SubscriberTest1.event_sub", "bus_rider_queue" => "myqueue", "bus_rider_class_name"=>"SubscriberTest1",
193
+ hash["args"].should == [ {"bus_rider_app_key"=>"my_thing", "bus_rider_sub_key"=>"SubscriberTest1.thing_filter", "bus_rider_queue" => "myqueue", "bus_rider_class_name"=>"SubscriberTest1",
194
194
  "bus_event_type" => "event_sub", "x" => "y"}.merge(bus_attrs) ]
195
195
 
196
196
  Runner1.value.should == 0
197
197
  Runner2.value.should == 0
198
198
  Util.constantize(hash["class"]).perform(*hash["args"])
199
- Runner1.value.should == 1
200
- Runner2.value.should == 0
199
+ Runner1.value.should == 0
200
+ Runner2.value.should == 1
201
201
 
202
202
  hash = JSON.parse(ResqueBus.redis.lpop("queue:myqueue"))
203
203
  hash["class"].should == "SubscriberTest1"
204
- hash["args"].should == [ {"bus_rider_app_key"=>"my_thing", "bus_rider_sub_key"=>"SubscriberTest1.thing_filter", "bus_rider_queue" => "myqueue", "bus_rider_class_name"=>"SubscriberTest1",
204
+ hash["args"].should == [ {"bus_rider_app_key"=>"my_thing", "bus_rider_sub_key"=>"SubscriberTest1.event_sub", "bus_rider_queue" => "myqueue", "bus_rider_class_name"=>"SubscriberTest1",
205
205
  "bus_event_type" => "event_sub", "x" => "y"}.merge(bus_attrs) ]
206
-
207
- Runner1.value.should == 1
208
- Runner2.value.should == 0
206
+
207
+ Runner1.value.should == 0
208
+ Runner2.value.should == 1
209
209
  Util.constantize(hash["class"]).perform(*hash["args"])
210
210
  Runner1.value.should == 1
211
211
  Runner2.value.should == 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-bus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-28 00:00:00.000000000 Z
12
+ date: 2013-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: resque