ruote-beanstalk 2.1.10 → 2.1.11

Sign up to get free protection for your applications and to get access to all the features.
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)