minbox 0.1.5 → 0.1.6

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