filing-cabinet 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 92f61315373773003effbbf6aaf3df1a79928c63
4
+ data.tar.gz: ce3b0c9570a48ee6b19249b8b6f88c27456d6f80
5
+ SHA512:
6
+ metadata.gz: 1f8c8a76a8d23201e70f419d451caa47e0d42288ceb8ce4268a55a7a171d540354d63337ea92a77b39ed4264f7829a89430aa2b43213b49b47359f70e0f181c3
7
+ data.tar.gz: a0db363b9330764d0aa2782f7e7bba1f74cd4cb0aa8b6b0a392a02d3dc209fbd4b3cc46acff8661b088c0489bb3fe0367f74b55a94300b3586fa75a9f8777e29
data/lib/filer/s3.rb CHANGED
@@ -29,16 +29,20 @@ module Filer
29
29
  @bucket = bucket
30
30
  end
31
31
 
32
- def s3_key(path)
33
- filename = File.basename(path)
32
+ def s3_key(source_dir, path)
33
+ filename = File.basename(path, '.*')
34
+ ext = File.extname(path)
35
+ keypath = path.gsub(source_dir, "").
36
+ gsub("#{filename}#{ext}", "").
37
+ gsub(/^\//, "")
34
38
  y = Time.now.strftime("%Y")
35
39
  m = Time.now.strftime("%m")
36
40
  d = Time.now.strftime("%d")
37
- "#{y}/#{m}/#{d}/#{filename}"
41
+ "#{keypath}#{filename}-#{y}-#{m}-#{d}#{ext}"
38
42
  end
39
43
 
40
- def put_file(path)
41
- o = bucket.objects[s3_key(path)]
44
+ def put_file(key, path)
45
+ o = bucket.objects[key]
42
46
  o.write(Pathname.new(path), server_side_encryption: :aes256)
43
47
  end
44
48
 
@@ -49,8 +53,6 @@ module Filer
49
53
  t = Tempfile.new([filename, ext])
50
54
  o.read do |ch| t.write(ch) end
51
55
  t.close
52
- # seems like a race condition
53
- sleep 1
54
56
  `open #{t.path}`
55
57
  end
56
58
  end
data/lib/filer/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Filer
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/filer/watcher.rb CHANGED
@@ -11,6 +11,7 @@ module Watcher
11
11
  @settings = settings
12
12
  Watcher.pid_file 'filer_watcher.pid'
13
13
  Watcher.stderr FILER_LOG
14
+ Watcher.stdout FILER_LOG
14
15
  self.s3
15
16
  self
16
17
  end
@@ -31,23 +32,28 @@ module Watcher
31
32
  end
32
33
 
33
34
  def self.run
34
- while running?
35
- begin
36
- files = @settings[:directories].flat_map {|d| Dir["#{d}/*"]}
37
- files.each do |f|
38
- @s3.put_file(f)
35
+ begin
36
+ while running?
37
+ dirs_files = @settings[:directories].flat_map do |d|
38
+ Dir["#{d}/**/*"].reject {|f| File.directory?(f)}.
39
+ map {|f| [d, f]}
40
+ end
41
+ dirs_files.each do |(d, f)|
42
+ key = @s3.s3_key(d, f)
43
+ @s3.put_file(key, f)
39
44
  fd = Filer::Filed.new(
40
- key: @s3.s3_key(f),
45
+ key: key,
41
46
  attachment: Base64.encode64(File.read(f)))
42
47
  fd.save
43
48
  File.delete(f)
44
49
  end
45
- self.notify("Processed #{files.size} files") unless files.empty?
46
- sleep 20
47
- rescue Exception => e
48
- self.notify("Filer encountered an error. " <<
49
- "See #{File.dirname(__FILE__)}/#{FILER_LOG}")
50
+ self.notify("Processed #{dirs_files.size} files") unless dirs_files.empty?
51
+ sleep 10
50
52
  end
53
+ rescue Exception => e
54
+ self.notify("Filer encountered an error. " <<
55
+ "See #{File.dirname(__FILE__)}/#{FILER_LOG}")
56
+ raise e
51
57
  end
52
58
  end
53
59
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filing-cabinet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brian Zeligson
@@ -14,7 +13,6 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,145 +27,127 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: thor
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: configliere
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: notifier
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: aws-sdk
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rest-client
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: flex
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: '0'
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: '0'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: flex-models
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: '0'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: fallen
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :runtime
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  description: Indexes files and stores to s3
@@ -194,27 +173,26 @@ files:
194
173
  homepage: ''
195
174
  licenses:
196
175
  - MIT
176
+ metadata: {}
197
177
  post_install_message:
198
178
  rdoc_options: []
199
179
  require_paths:
200
180
  - lib
201
181
  required_ruby_version: !ruby/object:Gem::Requirement
202
- none: false
203
182
  requirements:
204
- - - ! '>='
183
+ - - '>='
205
184
  - !ruby/object:Gem::Version
206
185
  version: '0'
207
186
  required_rubygems_version: !ruby/object:Gem::Requirement
208
- none: false
209
187
  requirements:
210
- - - ! '>='
188
+ - - '>='
211
189
  - !ruby/object:Gem::Version
212
190
  version: '0'
213
191
  requirements: []
214
192
  rubyforge_project:
215
- rubygems_version: 1.8.24
193
+ rubygems_version: 2.4.5
216
194
  signing_key:
217
- specification_version: 3
195
+ specification_version: 4
218
196
  summary: Indexes files and stores to s3
219
197
  test_files: []
220
198
  has_rdoc: