Class: FluentdServer::SyncRunner
- Inherits:
-
Object
- Object
- FluentdServer::SyncRunner
show all
- Includes:
- Logger
- Defined in:
- lib/fluentd_server/sync_runner.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Logger
included, #logger, #logger=
Constructor Details
#initialize(opts = {}) ⇒ SyncRunner
Returns a new instance of SyncRunner.
11
12
|
# File 'lib/fluentd_server/sync_runner.rb', line 11
def initialize(opts = {})
end
|
Class Method Details
.run(opts = {}) ⇒ Object
7
8
9
|
# File 'lib/fluentd_server/sync_runner.rb', line 7
def self.run(opts = {})
self.new(opts).run
end
|
Instance Method Details
#create(names) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/fluentd_server/sync_runner.rb', line 33
def create(names)
logger.debug "[sync] create #{names}"
names.each do |name|
begin
Post.create(name: name)
rescue ActiveRecord::RecordNotUnique => e
logger.debug "#{e.class} #{e.message} #{name}"
rescue => e
logger.warn "#{e.class} #{e.message} #{name}"
end
end
end
|
#delete(names) ⇒ Object
47
48
49
50
51
52
53
54
|
# File 'lib/fluentd_server/sync_runner.rb', line 47
def delete(names)
logger.debug "[sync] remove #{names}"
begin
Post.where(:name => names).delete_all
rescue => e
logger.warn "#{e.class} #{e.message} #{names}"
end
end
|
#find_diff(batch_size: 1000) ⇒ Array
Find difference between given array of paths and paths stored in DB
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/fluentd_server/sync_runner.rb', line 60
def find_diff(batch_size: 1000)
names = find_locals
plus = names
minus = []
Post.select('id, name').find_in_batches(batch_size: batch_size) do |batches|
batches = batches.map(&:name)
plus -= batches
minus += (batches - names)
end
[plus, minus]
end
|
#run ⇒ Object
14
15
16
17
18
19
20
|
# File 'lib/fluentd_server/sync_runner.rb', line 14
def run
logger.debug "[sync] sync runner started"
return nil unless FluentdServer::Config.file_storage
plus, minus = find_diff
create(plus)
delete(minus)
end
|