message_dir 0.0.1 → 1.0.1

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.
@@ -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: