minbox 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f483bc9bcd047c68ad7203630dc57f223c3cce4c182c783cf099ef551b02c937
4
- data.tar.gz: 2b313d59d6d84b3216250f15295a83800ad1eff6b54b5714a6492f7396293aae
3
+ metadata.gz: f978c5a9927d2594b91efe5f012474c2990bc0e248a079fe7d9201a6ae29202d
4
+ data.tar.gz: a0404042692342f22a920d8d282ae56584a8ce03a2f2e806bae41557686ed113
5
5
  SHA512:
6
- metadata.gz: 8d45fef638a89f7eda7fb3f7a49d9fda346d0c4086d6264ea95759adfb9aef7ef06e85cac594685627e5c64d941590bd9ae8760102b26270b5bcc756e375cfe8
7
- data.tar.gz: 78b921911e7e2a99fa8a584c1fb992dd3374db56cbefa0fcb2ac14aa33cdd80d5afb0c2e2324d55bae1dc1b629f5930b4abeed695a61b818a474c54eaa7536c4
6
+ metadata.gz: 5517bb0bcbbfa6c03d1251d378e50208e723b4ec8cb7e541bf1454b8ca0488548b9974c2b87c67a6bfaec0fb05ced6c3803071af3476ae418596d6b25d0a0033
7
+ data.tar.gz: 47d7d177102452252fd2febd655f271153e2e0bfa9cd6b24c3805103d745e561018457138863ce95f2c87e4efe37f2e2b188145b52f51134384dd335b6121de2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- minbox (0.1.5)
4
+ minbox (0.1.6)
5
5
  concurrent-ruby (~> 1.1)
6
6
  hashie (~> 3.6)
7
7
  listen (~> 3.1)
@@ -10,13 +10,16 @@ module Minbox
10
10
  end
11
11
 
12
12
  def initialize(root_dir:)
13
+ @semaphore = Mutex.new
13
14
  start_listening(root_dir)
14
15
  empty!
15
16
  end
16
17
 
17
18
  def emails(count: 0)
18
19
  wait_until { |x| x.count >= count } if count > 0
19
- @emails.values
20
+ with_lock do |emails|
21
+ emails.values
22
+ end
20
23
  end
21
24
 
22
25
  def wait_until(seconds: 10, wait: 0.1)
@@ -43,7 +46,9 @@ module Minbox
43
46
  end
44
47
 
45
48
  def empty!
46
- @emails = {}
49
+ with_lock do
50
+ @emails = {}
51
+ end
47
52
  end
48
53
 
49
54
  def each
@@ -55,13 +60,15 @@ module Minbox
55
60
  private
56
61
 
57
62
  def changed(modified, added, removed)
58
- added.each do |file|
59
- mail = Mail.read(file)
60
- Minbox.logger.debug("Received: #{mail.subject}")
61
- @emails[File.basename(file)] = mail
62
- end
63
- removed.each do |file|
64
- @emails.delete(File.basename(file))
63
+ with_lock do |emails|
64
+ added.each do |file|
65
+ mail = Mail.read(file)
66
+ Minbox.logger.debug("Received: #{mail.subject}")
67
+ emails[File.basename(file)] = mail
68
+ end
69
+ removed.each do |file|
70
+ emails.delete(File.basename(file))
71
+ end
65
72
  end
66
73
  end
67
74
 
@@ -72,5 +79,11 @@ module Minbox
72
79
  def start_listening(root_dir)
73
80
  listener_for(root_dir).start
74
81
  end
82
+
83
+ def with_lock
84
+ @semaphore.synchronize do
85
+ yield @emails if block_given?
86
+ end
87
+ end
75
88
  end
76
89
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Minbox
4
- VERSION = '0.1.5'
4
+ VERSION = '0.1.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo khan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-16 00:00:00.000000000 Z
11
+ date: 2019-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby