bumbleworks 0.0.47 → 0.0.48

Sign up to get free protection for your applications and to get access to all the features.
@@ -84,6 +84,16 @@ module Bumbleworks
84
84
  #
85
85
  define_setting :storage_adapter
86
86
 
87
+ # This setting will be sent to the storage adapter's .new_storage method when
88
+ # initializing the storage. The base adapter (and the Hash adapter) ignore the
89
+ # options argument, but for the Redis and Sequel adapters, this is a handy way
90
+ # to pass through any options that Ruote's drivers understand.
91
+ #
92
+ # @Example:
93
+ # Bumbleworks.storage_options = { 'sequel_table_name' => 'bunnies_table' }
94
+ #
95
+ define_setting :storage_options
96
+
87
97
  # Bumbleworks will attempt to log a variety of events (tasks becoming
88
98
  # available, being claimed/released/completed, etc), and to do so it uses
89
99
  # the logger registered in configuration. If no logger has been registered,
@@ -137,6 +147,7 @@ module Bumbleworks
137
147
 
138
148
  def initialize
139
149
  @storage_adapters = []
150
+ @storage_options = {}
140
151
  @timeout ||= 5
141
152
  end
142
153
 
@@ -129,7 +129,7 @@ module Bumbleworks
129
129
  end
130
130
 
131
131
  def storage
132
- @storage ||= Bumbleworks.storage_adapter.new_storage(Bumbleworks.storage)
132
+ @storage ||= Bumbleworks.storage_adapter.new_storage(Bumbleworks.storage, Bumbleworks.storage_options)
133
133
  end
134
134
 
135
135
  def reset!
@@ -12,12 +12,13 @@ module Bumbleworks
12
12
  raise "Subclass responsibility"
13
13
  end
14
14
 
15
- def new_storage(storage)
15
+ def new_storage(storage, options = {})
16
16
  raise UnsupportedStorage unless use?(storage)
17
- wrap_storage_with_driver(storage)
17
+ wrap_storage_with_driver(storage, options)
18
18
  end
19
19
 
20
- def wrap_storage_with_driver(storage)
20
+ def wrap_storage_with_driver(storage, options = {})
21
+ # the base method ignores options; use them in subclasses
21
22
  driver.new(storage)
22
23
  end
23
24
 
@@ -1,3 +1,3 @@
1
1
  module Bumbleworks
2
- VERSION = "0.0.47"
2
+ VERSION = "0.0.48"
3
3
  end
@@ -212,6 +212,17 @@ describe Bumbleworks::Configuration do
212
212
  end
213
213
  end
214
214
 
215
+ describe '#storage_options' do
216
+ it 'defaults to empty hash' do
217
+ subject.storage_options.should == {}
218
+ end
219
+
220
+ it 'can be overridden' do
221
+ subject.storage_options = { :smooshie => 'wubbles' }
222
+ subject.storage_options.should == { :smooshie => 'wubbles' }
223
+ end
224
+ end
225
+
215
226
  describe "#storage_adapter" do
216
227
  it 'defaults to first adapter in registered list that uses storage' do
217
228
  right_adapter = double('right', :use? => true)
@@ -339,9 +339,11 @@ describe Bumbleworks::Ruote do
339
339
  driven_storage = ::Ruote::HashStorage.new({})
340
340
  storage = {}
341
341
  adapter = double('Adapter')
342
- adapter.stub(:new_storage).with(storage).and_return(driven_storage)
342
+ options = { :thing => 'yay' }
343
+ adapter.stub(:new_storage).with(storage, options).and_return(driven_storage)
343
344
  Bumbleworks.storage = storage
344
345
  Bumbleworks.storage_adapter = adapter
346
+ Bumbleworks.storage_options = options
345
347
  described_class.storage.should == driven_storage
346
348
  end
347
349
  end
@@ -59,25 +59,25 @@ describe Bumbleworks::StorageAdapter do
59
59
  described_class.stub(:driver => storage_driver)
60
60
  end
61
61
 
62
- it 'returns driven storage' do
63
- described_class.wrap_storage_with_driver(:awesome_stuff).should == :new_storage
62
+ it 'ignores options, and returns driven storage' do
63
+ described_class.wrap_storage_with_driver(:awesome_stuff, { :a => :b }).should == :new_storage
64
64
  end
65
65
  end
66
66
 
67
67
  describe '.new_storage' do
68
68
  before :each do
69
- described_class.stub(:wrap_storage_with_driver).with(:awesome_stuff).and_return(:new_storage)
69
+ described_class.stub(:wrap_storage_with_driver).with(:awesome_stuff, { :a => :b }).and_return(:new_storage)
70
70
  end
71
71
 
72
72
  it 'returns driven storage if driver can use storage' do
73
73
  described_class.stub(:use?).with(:awesome_stuff).and_return(true)
74
- described_class.new_storage(:awesome_stuff).should == :new_storage
74
+ described_class.new_storage(:awesome_stuff, { :a => :b }).should == :new_storage
75
75
  end
76
76
 
77
77
  it "raises UnsupportedStorage if driver can't use storage" do
78
78
  described_class.stub(:use?).with(:awesome_stuff).and_return(false)
79
79
  expect {
80
- described_class.new_storage(:awesome_stuff)
80
+ described_class.new_storage(:awesome_stuff, { :a => :b })
81
81
  }.to raise_error(Bumbleworks::StorageAdapter::UnsupportedStorage)
82
82
  end
83
83
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bumbleworks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.47
4
+ version: 0.0.48
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: