ruote-beanstalk 2.1.10 → 2.1.11

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/CHANGELOG.txt CHANGED
@@ -2,7 +2,15 @@
2
2
  = ruote-beanstalk - CHANGELOG.txt
3
3
 
4
4
 
5
- == ruote-beanstalk 2.1.10 release 2010/06/15
5
+ == ruote-beanstalk 2.1.11 released 2010/10/13
6
+
7
+ - BsStorage -> Storage
8
+ - ParticipantProxy closes conn after each despatching
9
+ - BsParticipant -> ParticipantProxy, BsReceiver -> Receiver
10
+ - Ruote::Beanstalk::Storage.close (shutdown in fact)
11
+
12
+
13
+ == ruote-beanstalk 2.1.10 released 2010/06/15
6
14
 
7
15
  - initial release
8
16
 
data/CREDITS.txt ADDED
@@ -0,0 +1,15 @@
1
+
2
+ = ruote-beanstalk CREDITS.txt
3
+
4
+ == authors
5
+
6
+ - John Mettraux - http://github.com/jmettraux
7
+
8
+
9
+ == contributors
10
+
11
+
12
+ == many thanks to
13
+
14
+ - the beanstalk authors and contributors
15
+
data/README.md CHANGED
@@ -1,50 +1,52 @@
1
1
 
2
2
  # ruote-beanstalk
3
3
 
4
- Beanstalk extensions for ruote 2.1 (a Ruby workflow engine).
4
+ Beanstalk extensions for [ruote](http://ruote.rubyforge.org) 2.1 (a Ruby workflow engine).
5
5
 
6
- "Beanstalk is a simple, fast workqueue service" (http://kr.github.com/beanstalkd/).
6
+ [Beanstalk is a simple, fast workqueue service](http://kr.github.com/beanstalkd/).
7
7
 
8
- ruote-beanstalk provides a participant/receiver pair. Emitting workitems to a Beanstalk queue/tube and listening/receiving them back. Workers can connect to the Beanstalk queue, receive workitems, do some work and then (optionally) send the updated workitem back to the ruote system.
8
+ ruote-beanstalk provides two things, **first** a ParticipantProxy / Receiver pair, **second** a ruote storage implementation.
9
9
 
10
- There is a bonus : Ruote::Beanstalk::BsStorage, a storage implementation for ruote. Workers and engines can connect over Beanstalk to a shared storage.
10
+ The ParticipantProxy / Receiver pair is about emitting workitems to a Beanstalk queue/tube and listening/receiving them back. Workers can connect to the Beanstalk queue, receive workitems, do some work and then (optionally) send the updated workitem back to the ruote system.
11
11
 
12
- BsStorage listens to a Beanstalk queue where it receives storage orders that it conveys to a FsStorage instance.
12
+ Ruote::Beanstalk::Storage is a storage implementation for ruote. Workers and engines can connect over Beanstalk to a shared storage.
13
+
14
+ The storage listens to a Beanstalk queue where it receives storage orders that it conveys to a FsStorage instance.
13
15
 
14
16
  (Initially I tried to use Beanstalk for msgs and schedules as well, but since you can't delete a delayed message in Beanstalk (as of now), I fell back to using Beanstalk as middleware, it's slightly slower, but much simpler and robust).
15
17
 
16
- RDOC : http://ruote.rubyforge.org/ruote-beanstalk_rdoc/
18
+ rdoc : [http://ruote.rubyforge.org/ruote-beanstalk_rdoc/](http://ruote.rubyforge.org/ruote-beanstalk_rdoc/)
17
19
 
18
20
 
19
21
  ## usage
20
22
 
21
- ### Ruote::Beanstalk::BsParticipant and BsReceiver
23
+ ### Ruote::Beanstalk::ParticipantProxy and Receiver
22
24
 
23
25
  Registering a Beanstalk participant :
24
26
 
25
27
  @engine.register_participant(
26
28
  'alpha',
27
- Ruote::Beanstalk::BsParticipant,
29
+ Ruote::Beanstalk::ParticipantProxy,
28
30
  'beanstalk' => '127.0.0.1:11300',
29
31
  'tube' => 'ruote-workitems')
30
32
 
31
33
 
32
34
  Binding a listener to a storage or an engine :
33
35
 
34
- Ruote::Beanstalk::BsReceiver.new(
36
+ Ruote::Beanstalk::Receiver.new(
35
37
  engine, '127.0.0.1:11300', 'tube' => 'ruote-incoming')
36
38
 
37
39
  # or
38
40
 
39
- Ruote::Beanstalk::BsReceiver.new(
41
+ Ruote::Beanstalk::Receiver.new(
40
42
  storage, '127.0.0.1:11300', 'tube' => 'ruote-incoming')
41
43
 
42
44
  The receiver manages a thread that listens to incoming messages and feeds them to ruote via the engine or directly via a storage.
43
45
 
44
46
 
45
- ### Ruote::Beanstalk::BsStorage
47
+ ### Ruote::Beanstalk::Storage
46
48
 
47
- There are two modes in which BsStorage can be used :
49
+ There are two modes in which Storage can be used :
48
50
 
49
51
  * bound to a remote storage (client)
50
52
  * bound to the physical storage (server)
@@ -60,13 +62,13 @@ Beanstalk is the intermediary.
60
62
 
61
63
  Pass a string of the form host:port and a hash of options :
62
64
 
63
- Ruote::Beanstalk::BsStorage.new('127.0.0.1:11300', opts)
65
+ Ruote::Beanstalk::Storage.new('127.0.0.1:11300', opts)
64
66
 
65
67
  Wrapped in an engine + worker :
66
68
 
67
69
  engine = Ruote::Engine.new(
68
70
  Ruote::Worker.new(
69
- Ruote::Beanstalk::BsStorage.new('127.0.0.1:11300', opts)))
71
+ Ruote::Beanstalk::Storage.new('127.0.0.1:11300', opts)))
70
72
 
71
73
  #### server
72
74
 
@@ -74,12 +76,12 @@ This piece of ruby starts a Beanstalk instance (:fork => true) and starts a BsSt
74
76
 
75
77
  require 'ruote/beanstalk'
76
78
 
77
- Ruote::Beanstalk::BsStorage.new(':11300', 'ruote_work', :fork => true)
79
+ Ruote::Beanstalk::Storage.new(':11300', 'ruote_work', :fork => true)
78
80
 
79
81
 
80
82
  ## running tests
81
83
 
82
- ### Ruote::Beanstalk::BsParticipant and BsReceiver
84
+ ### Ruote::Beanstalk::ParticipantProxy and Receiver
83
85
 
84
86
  Simply do
85
87
 
@@ -88,7 +90,7 @@ Simply do
88
90
  in your ruote-beanstalk/ directory.
89
91
 
90
92
 
91
- ### Ruote::Beanstalk::BsStorage
93
+ ### Ruote::Beanstalk::Storage
92
94
 
93
95
  assuming you have
94
96
 
@@ -106,13 +108,13 @@ To launch a beanstalkd + fs storage couple, then run unit or functional tests
106
108
 
107
109
  get into ruote/ and do
108
110
 
109
- ruby test/unit/storage.rb --beanstalk
111
+ ruby test/unit/storage.rb -- --beanstalk
110
112
 
111
113
  * functional tests :
112
114
 
113
115
  get into ruote/ and do
114
116
 
115
- ruby test/functional/test.rb --beanstalk
117
+ ruby test/functional/test.rb -- --beanstalk
116
118
 
117
119
 
118
120
  ## license
@@ -122,15 +124,15 @@ MIT
122
124
 
123
125
  ## links
124
126
 
125
- * http://kr.github.com/beanstalkd/
126
-
127
- * http://ruote.rubyforge.org/
128
- * http://github.com/jmettraux/ruote-beanstalk
127
+ * [http://kr.github.com/beanstalkd/](http://kr.github.com/beanstalkd/)
128
+ * [http://ruote.rubyforge.org/](http://ruote.rubyforge.org/)
129
+ * [http://github.com/jmettraux/ruote-beanstalk](http://github.com/jmettraux/ruote-beanstalk)
129
130
 
130
131
 
131
132
  ## feedback
132
133
 
133
- mailing list : http://groups.google.com/group/openwferu-users
134
+ mailing list : [http://groups.google.com/group/openwferu-users](http://groups.google.com/group/openwferu-users)
135
+
134
136
  irc : irc.freenode.net #ruote
135
137
 
136
138
 
data/Rakefile CHANGED
@@ -1,4 +1,6 @@
1
1
 
2
+ $:.unshift('.') # ruby 1.9.2
3
+
2
4
  require 'rubygems'
3
5
  require 'rake'
4
6
 
@@ -33,8 +35,8 @@ Beanstalk participant/receiver/storage for ruote (a Ruby workflow engine)
33
35
  gem.test_file = 'test/test.rb'
34
36
 
35
37
  gem.add_dependency 'ruote', ">= #{Ruote::Beanstalk::VERSION}"
36
- gem.add_dependency 'rufus-cloche', '>= 0.1.17'
37
- gem.add_dependency 'beanstalk-client', '>= 1.0.2'
38
+ gem.add_dependency 'rufus-cloche', '>= 0.1.20'
39
+ gem.add_dependency 'beanstalk-client', '>= 1.1.0'
38
40
  gem.add_development_dependency 'yard'
39
41
  gem.add_development_dependency 'rake'
40
42
  gem.add_development_dependency 'jeweler'
@@ -47,40 +49,25 @@ Jeweler::GemcutterTasks.new
47
49
  #
48
50
  # DOC
49
51
 
50
- #begin
51
- #
52
- # require 'yard'
53
- #
54
- # YARD::Rake::YardocTask.new do |doc|
55
- # doc.options = [
56
- # '-o', 'html/ruote-beanstalk', '--title',
57
- # "ruote-beanstalk #{Ruote::Beanstalk::VERSION}"
58
- # ]
59
- # end
60
- #
61
- #rescue LoadError
62
- #
63
- # task :yard do
64
- # abort "YARD is not available : sudo gem install yard"
65
- # end
66
- #end
67
-
68
52
  #
69
53
  # make sure to have rdoc 2.5.x to run that
70
54
  #
71
55
  require 'rake/rdoctask'
72
56
  Rake::RDocTask.new do |rd|
73
- rd.main = 'README.rdoc'
57
+
58
+ rd.main = 'readme.rdoc'
74
59
  rd.rdoc_dir = 'rdoc/ruote-beanstalk_rdoc'
75
- rd.rdoc_files.include('README.rdoc', 'CHANGELOG.txt', 'lib/**/*.rb')
76
60
  rd.title = "ruote-beanstalk #{Ruote::Beanstalk::VERSION}"
61
+
62
+ rd.rdoc_files.include(
63
+ 'readme.rdoc', 'CHANGELOG.txt', 'CREDITS.txt', 'lib/**/*.rb')
77
64
  end
78
65
 
79
66
 
80
67
  #
81
68
  # TO THE WEB
82
69
 
83
- task :upload_website => [ :clean, :rdoc ] do
70
+ task :upload_rdoc => [ :clean, :rdoc ] do
84
71
 
85
72
  account = 'jmettraux@rubyforge.org'
86
73
  webdir = '/var/www/gforge-projects/ruote'
data/TODO.txt CHANGED
@@ -13,8 +13,15 @@
13
13
  [o] security issue in #serve (send)
14
14
  [o] receiver : launchitem ?
15
15
  [o] 'commands' channel : better name ?
16
+ [o] rw : document participant / receiver (use bs as an example)
17
+ [o] storage.close
18
+ [o] ParticipantProxy ?
19
+ [x] operate : better name ?
20
+ [x] what about receiver connections that timed out ? Is it possible ?
16
21
 
17
- [ ] operate : better name ?
22
+ [x] base64 encode/decode to allow for non-ascii values
23
+ => add some 漢字 test to ruote/test/unit/storage.rb
24
+ This is a beanstalk-client vs ruby 1.9.x problem
18
25
 
19
- [ ] rw : document participant / receiver (use bs as an example)
26
+ [ ] follow example of latest ruote-amqp (for what ?)
20
27
 
@@ -7,14 +7,14 @@
7
7
  <key>ApplicationVersion</key>
8
8
  <array>
9
9
  <string>com.omnigroup.OmniGraffle</string>
10
- <string>138.14.0.129428</string>
10
+ <string>138.17.0.133677</string>
11
11
  </array>
12
12
  <key>AutoAdjust</key>
13
13
  <true/>
14
14
  <key>BackgroundGraphic</key>
15
15
  <dict>
16
16
  <key>Bounds</key>
17
- <string>{{0, 0}, {1118, 783}}</string>
17
+ <string>{{0, 0}, {559, 783}}</string>
18
18
  <key>Class</key>
19
19
  <string>SolidGraphic</string>
20
20
  <key>ID</key>
@@ -44,20 +44,20 @@
44
44
  <key>Creator</key>
45
45
  <string>John Mettraux</string>
46
46
  <key>DisplayScale</key>
47
- <string>1 0/72 in = 1 0/72 in</string>
47
+ <string>1 0/72 in = 1.0000 in</string>
48
48
  <key>GraphDocumentVersion</key>
49
49
  <integer>6</integer>
50
50
  <key>GraphicsList</key>
51
51
  <array>
52
52
  <dict>
53
53
  <key>Bounds</key>
54
- <string>{{13, 307}, {541, 96}}</string>
54
+ <string>{{29, 26}, {484, 65}}</string>
55
55
  <key>Class</key>
56
56
  <string>ShapedGraphic</string>
57
57
  <key>ID</key>
58
- <integer>13</integer>
58
+ <integer>17</integer>
59
59
  <key>ImageID</key>
60
- <integer>2</integer>
60
+ <integer>4</integer>
61
61
  <key>Shape</key>
62
62
  <string>Rectangle</string>
63
63
  <key>Style</key>
@@ -76,75 +76,13 @@
76
76
  </dict>
77
77
  <dict>
78
78
  <key>Bounds</key>
79
- <string>{{64, 93}, {195, 218}}</string>
79
+ <string>{{29, 331}, {395, 108}}</string>
80
80
  <key>Class</key>
81
81
  <string>ShapedGraphic</string>
82
- <key>FontInfo</key>
83
- <dict>
84
- <key>Color</key>
85
- <dict>
86
- <key>w</key>
87
- <string>0</string>
88
- </dict>
89
- <key>Font</key>
90
- <string>HelveticaNeue</string>
91
- <key>NSKern</key>
92
- <real>0.0</real>
93
- <key>Size</key>
94
- <real>12</real>
95
- </dict>
96
82
  <key>ID</key>
97
- <integer>12</integer>
98
- <key>Shape</key>
99
- <string>Rectangle</string>
100
- <key>Style</key>
101
- <dict>
102
- <key>fill</key>
103
- <dict>
104
- <key>Draws</key>
105
- <string>NO</string>
106
- <key>GradientColor</key>
107
- <dict>
108
- <key>w</key>
109
- <string>1</string>
110
- </dict>
111
- <key>MiddleFraction</key>
112
- <real>0.13492070138454437</real>
113
- </dict>
114
- <key>stroke</key>
115
- <dict>
116
- <key>Cap</key>
117
- <integer>0</integer>
118
- <key>Color</key>
119
- <dict>
120
- <key>b</key>
121
- <string>0.494118</string>
122
- <key>g</key>
123
- <string>0.494118</string>
124
- <key>r</key>
125
- <string>0.494118</string>
126
- </dict>
127
- <key>Join</key>
128
- <integer>0</integer>
129
- </dict>
130
- </dict>
131
- <key>Text</key>
132
- <dict>
133
- <key>Align</key>
134
- <integer>0</integer>
135
- <key>VerticalPad</key>
136
- <integer>0</integer>
137
- </dict>
138
- </dict>
139
- <dict>
140
- <key>Bounds</key>
141
- <string>{{13, 25}, {498, 50}}</string>
142
- <key>Class</key>
143
- <string>ShapedGraphic</string>
144
- <key>ID</key>
145
- <integer>10</integer>
83
+ <integer>16</integer>
146
84
  <key>ImageID</key>
147
- <integer>1</integer>
85
+ <integer>3</integer>
148
86
  <key>Shape</key>
149
87
  <string>Rectangle</string>
150
88
  <key>Style</key>
@@ -180,8 +118,8 @@
180
118
  <integer>9</integer>
181
119
  <key>Points</key>
182
120
  <array>
183
- <string>{360.316, 183.523}</string>
184
- <string>{342.116, 151.865}</string>
121
+ <string>{425.495, 198.67}</string>
122
+ <string>{403.937, 160.868}</string>
185
123
  </array>
186
124
  <key>Style</key>
187
125
  <dict>
@@ -225,8 +163,8 @@
225
163
  <integer>8</integer>
226
164
  <key>Points</key>
227
165
  <array>
228
- <string>{230.557, 150.304}</string>
229
- <string>{287.04, 137.081}</string>
166
+ <string>{196.083, 172.348}</string>
167
+ <string>{348.649, 144.137}</string>
230
168
  </array>
231
169
  <key>Style</key>
232
170
  <dict>
@@ -253,7 +191,7 @@
253
191
  </dict>
254
192
  <dict>
255
193
  <key>Bounds</key>
256
- <string>{{149, 214}, {88, 79}}</string>
194
+ <string>{{114, 234}, {88, 79}}</string>
257
195
  <key>Class</key>
258
196
  <string>ShapedGraphic</string>
259
197
  <key>FontInfo</key>
@@ -308,7 +246,7 @@
308
246
  <key>Text</key>
309
247
  <dict>
310
248
  <key>Text</key>
311
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
249
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
312
250
  {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
313
251
  {\colortbl;\red255\green255\blue255;}
314
252
  \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
@@ -320,7 +258,7 @@
320
258
  </dict>
321
259
  <dict>
322
260
  <key>Bounds</key>
323
- <string>{{100, 174}, {88, 79}}</string>
261
+ <string>{{65, 194}, {88, 79}}</string>
324
262
  <key>Class</key>
325
263
  <string>ShapedGraphic</string>
326
264
  <key>FontInfo</key>
@@ -375,7 +313,7 @@
375
313
  <key>Text</key>
376
314
  <dict>
377
315
  <key>Text</key>
378
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
316
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
379
317
  {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
380
318
  {\colortbl;\red255\green255\blue255;}
381
319
  \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
@@ -387,7 +325,7 @@
387
325
  </dict>
388
326
  <dict>
389
327
  <key>Bounds</key>
390
- <string>{{143, 121}, {88, 79}}</string>
328
+ <string>{{108, 141}, {88, 79}}</string>
391
329
  <key>Class</key>
392
330
  <string>ShapedGraphic</string>
393
331
  <key>FontInfo</key>
@@ -442,19 +380,19 @@
442
380
  <key>Text</key>
443
381
  <dict>
444
382
  <key>Text</key>
445
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
383
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
446
384
  {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
447
385
  {\colortbl;\red255\green255\blue255;}
448
386
  \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
449
387
 
450
- \f0\fs24 \cf0 BsStorage}</string>
388
+ \f0\fs24 \cf0 Beanstalk::Storage}</string>
451
389
  <key>VerticalPad</key>
452
390
  <integer>0</integer>
453
391
  </dict>
454
392
  </dict>
455
393
  <dict>
456
394
  <key>Bounds</key>
457
- <string>{{337, 180}, {88, 79}}</string>
395
+ <string>{{397, 196}, {99, 79}}</string>
458
396
  <key>Class</key>
459
397
  <string>ShapedGraphic</string>
460
398
  <key>FontInfo</key>
@@ -509,19 +447,21 @@
509
447
  <key>Text</key>
510
448
  <dict>
511
449
  <key>Text</key>
512
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
450
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
513
451
  {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
514
452
  {\colortbl;\red255\green255\blue255;}
515
453
  \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
516
454
 
517
- \f0\fs24 \cf0 BsStorage}</string>
455
+ \f0\fs24 \cf0 Beanstalk::\
456
+ Storage\
457
+ :fork =&gt; true}</string>
518
458
  <key>VerticalPad</key>
519
459
  <integer>0</integer>
520
460
  </dict>
521
461
  </dict>
522
462
  <dict>
523
463
  <key>Bounds</key>
524
- <string>{{287, 104}, {82, 47}}</string>
464
+ <string>{{349, 113}, {82, 47}}</string>
525
465
  <key>Class</key>
526
466
  <string>ShapedGraphic</string>
527
467
  <key>FontInfo</key>
@@ -576,7 +516,7 @@
576
516
  <key>Text</key>
577
517
  <dict>
578
518
  <key>Text</key>
579
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290
519
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
580
520
  {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
581
521
  {\colortbl;\red255\green255\blue255;}
582
522
  \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
@@ -588,7 +528,7 @@
588
528
  </dict>
589
529
  <dict>
590
530
  <key>Bounds</key>
591
- <string>{{293, 71}, {149, 218}}</string>
531
+ <string>{{363, 87}, {149, 206}}</string>
592
532
  <key>Class</key>
593
533
  <string>ShapedGraphic</string>
594
534
  <key>FontInfo</key>
@@ -648,6 +588,68 @@
648
588
  <integer>0</integer>
649
589
  </dict>
650
590
  </dict>
591
+ <dict>
592
+ <key>Bounds</key>
593
+ <string>{{29, 130}, {195, 201}}</string>
594
+ <key>Class</key>
595
+ <string>ShapedGraphic</string>
596
+ <key>FontInfo</key>
597
+ <dict>
598
+ <key>Color</key>
599
+ <dict>
600
+ <key>w</key>
601
+ <string>0</string>
602
+ </dict>
603
+ <key>Font</key>
604
+ <string>HelveticaNeue</string>
605
+ <key>NSKern</key>
606
+ <real>0.0</real>
607
+ <key>Size</key>
608
+ <real>12</real>
609
+ </dict>
610
+ <key>ID</key>
611
+ <integer>12</integer>
612
+ <key>Shape</key>
613
+ <string>Rectangle</string>
614
+ <key>Style</key>
615
+ <dict>
616
+ <key>fill</key>
617
+ <dict>
618
+ <key>Draws</key>
619
+ <string>NO</string>
620
+ <key>GradientColor</key>
621
+ <dict>
622
+ <key>w</key>
623
+ <string>1</string>
624
+ </dict>
625
+ <key>MiddleFraction</key>
626
+ <real>0.13492070138454437</real>
627
+ </dict>
628
+ <key>stroke</key>
629
+ <dict>
630
+ <key>Cap</key>
631
+ <integer>0</integer>
632
+ <key>Color</key>
633
+ <dict>
634
+ <key>b</key>
635
+ <string>0.494118</string>
636
+ <key>g</key>
637
+ <string>0.494118</string>
638
+ <key>r</key>
639
+ <string>0.494118</string>
640
+ </dict>
641
+ <key>Join</key>
642
+ <integer>0</integer>
643
+ </dict>
644
+ </dict>
645
+ <key>Text</key>
646
+ <dict>
647
+ <key>Align</key>
648
+ <integer>0</integer>
649
+ <key>VerticalPad</key>
650
+ <integer>0</integer>
651
+ </dict>
652
+ </dict>
651
653
  </array>
652
654
  <key>GridInfo</key>
653
655
  <dict/>
@@ -656,9 +658,9 @@
656
658
  <key>GuidesVisible</key>
657
659
  <string>YES</string>
658
660
  <key>HPages</key>
659
- <integer>2</integer>
661
+ <integer>1</integer>
660
662
  <key>ImageCounter</key>
661
- <integer>3</integer>
663
+ <integer>5</integer>
662
664
  <key>ImageLinkBack</key>
663
665
  <array>
664
666
  <dict/>
@@ -666,8 +668,8 @@
666
668
  </array>
667
669
  <key>ImageList</key>
668
670
  <array>
669
- <string>image2.png</string>
670
- <string>image1.png</string>
671
+ <string>image4.png</string>
672
+ <string>image3.png</string>
671
673
  </array>
672
674
  <key>KeepToScale</key>
673
675
  <false/>
@@ -706,7 +708,7 @@
706
708
  <key>MasterSheets</key>
707
709
  <array/>
708
710
  <key>ModificationDate</key>
709
- <string>2010-06-14 14:38:47 +0900</string>
711
+ <string>2010-10-06 23:04:24 +0900</string>
710
712
  <key>Modifier</key>
711
713
  <string>John Mettraux</string>
712
714
  <key>NotesVisible</key>
@@ -777,7 +779,7 @@
777
779
  </dict>
778
780
  </array>
779
781
  <key>Frame</key>
780
- <string>{{633, 88}, {1140, 1070}}</string>
782
+ <string>{{585, 86}, {1140, 1070}}</string>
781
783
  <key>ListView</key>
782
784
  <true/>
783
785
  <key>OutlineWidth</key>
@@ -791,7 +793,7 @@
791
793
  <key>SidebarWidth</key>
792
794
  <integer>120</integer>
793
795
  <key>VisibleRegion</key>
794
- <string>{{0, -59}, {1005, 901}}</string>
796
+ <string>{{-223, -66}, {1005, 916}}</string>
795
797
  <key>Zoom</key>
796
798
  <real>1</real>
797
799
  <key>ZoomValues</key>
Binary file
Binary file
data/doc/storages.png CHANGED
Binary file
@@ -33,7 +33,7 @@ module Beanstalk
33
33
  # :binlog
34
34
  # :user
35
35
  #
36
- def self.fork (opts={})
36
+ def self.fork(opts={})
37
37
 
38
38
  quiet = opts.delete(:quiet)
39
39
  no_kill = opts.delete(:no_kill_at_exit)