message_dir 0.0.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -45,7 +45,11 @@ class MessageDir
45
45
  # make sure them files are synced
46
46
  mode |= File::SYNC unless mode & File::SYNC == File::SYNC
47
47
 
48
- @io = File.open(self.path, mode, &block)
48
+ @io = File.open(self.path, mode)
49
+
50
+ if block_given?
51
+ yield self
52
+ end
49
53
  end
50
54
 
51
55
  def fh
@@ -56,7 +60,11 @@ class MessageDir
56
60
  raise "Can't move a locked file" if locked?
57
61
 
58
62
  close
63
+ if self.error?
64
+ FileUtils.mv(self.path + ".err", File.join(path, self.guid + ".err"))
65
+ end
59
66
  FileUtils.mv(self.path, File.join(path, self.guid))
67
+
60
68
  @path = path
61
69
  open
62
70
  end
@@ -121,6 +129,21 @@ class MessageDir
121
129
  @locked = false
122
130
  end
123
131
 
132
+ def error?
133
+ File.exists?(self.path + ".err")
134
+ end
135
+
136
+ def error
137
+ return nil unless self.error?
138
+ File.read(self.path + ".err")
139
+ end
140
+
141
+ def error=(msg)
142
+ err = File.open(self.path + ".err", File::WRONLY|File::CREAT|File::TRUNC)
143
+ err.puts msg
144
+ err.close
145
+ end
146
+
124
147
  def method_missing(method, *args, &block)
125
148
  super
126
149
  rescue NameError, NoMethodError => e
@@ -128,4 +151,4 @@ class MessageDir
128
151
  end
129
152
 
130
153
  end
131
- end
154
+ end
@@ -1,3 +1,3 @@
1
1
  class MessageDir
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.1"
3
3
  end
data/lib/message_dir.rb CHANGED
@@ -58,7 +58,7 @@ class MessageDir
58
58
  # find all the wanted paths
59
59
  paths = spots.collect do |spot|
60
60
  Dir[File.join(path.send(spot), '*')].select do |path|
61
- path !~ /\.lock$/ && File.file?(path)
61
+ path !~ /\.(lock|err)$/ && File.file?(path)
62
62
  end
63
63
  end.flatten
64
64
 
@@ -298,4 +298,41 @@ describe MessageDir do
298
298
  File.exists?(msg.path).should_not be_false
299
299
  end
300
300
  end
301
+
302
+ describe "errors" do
303
+ it "should create an .err file on error in block" do
304
+ msg = subject.new do |fh|
305
+ fh.puts "I am new"
306
+ fh.error = "I have errors"
307
+ end
308
+ File.exists?(msg.path).should be_true
309
+ File.exists?(msg.path + ".err").should be_true
310
+ end
311
+
312
+ it "should create an .err file on error" do
313
+ msg = subject.new do |fh|
314
+ fh.puts "I am new"
315
+ end
316
+ msg.error = "I have errors"
317
+
318
+ File.exists?(msg.path).should be_true
319
+ File.exists?(msg.path + ".err").should be_true
320
+ end
321
+
322
+ it "should return the contents of the .err file" do
323
+ msg = subject.new do |fh|
324
+ fh.error = "No waaaaaay"
325
+ end
326
+
327
+ msg.error.should == "No waaaaaay\n"
328
+ end
329
+
330
+ it ".err files should be skipped in listings" do
331
+ msg = subject.new do |fh|
332
+ fh.error = "error"
333
+ end
334
+
335
+ subject.msgs.should_not be_empty
336
+ end
337
+ end
301
338
  end
metadata CHANGED
@@ -1,38 +1,34 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: message_dir
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
4
5
  prerelease:
5
- version: 0.0.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Hartog C. de Mik
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-03-07 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-07-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: simple_uuid
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &19075020 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "0.2"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.2'
24
22
  type: :runtime
25
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *19075020
26
25
  description: Handle slow network messages with care
27
- email:
26
+ email:
28
27
  - hartog.de.mik@gmail.com
29
28
  executables: []
30
-
31
29
  extensions: []
32
-
33
30
  extra_rdoc_files: []
34
-
35
- files:
31
+ files:
36
32
  - .gitignore
37
33
  - Gemfile
38
34
  - README.rdoc
@@ -46,30 +42,27 @@ files:
46
42
  - spec/spec_helper.rb
47
43
  homepage: https://github.com/coffeeaddict/message_dir
48
44
  licenses: []
49
-
50
45
  post_install_message:
51
46
  rdoc_options: []
52
-
53
- require_paths:
47
+ require_paths:
54
48
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
49
+ required_ruby_version: !ruby/object:Gem::Requirement
56
50
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: "0"
61
- required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
56
  none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: "0"
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
67
61
  requirements: []
68
-
69
62
  rubyforge_project: message_dir
70
- rubygems_version: 1.8.16
63
+ rubygems_version: 1.8.11
71
64
  signing_key:
72
65
  specification_version: 3
73
66
  summary: Maildir like messages
74
67
  test_files: []
75
-
68
+ has_rdoc: