rest-ftp-daemon 0.302.3 → 0.304.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +14 -3
  3. data/README.md +1 -1
  4. data/bin/rest-ftp-daemon +3 -3
  5. data/config.ru +1 -1
  6. data/defaults.yml +2 -2
  7. data/lib/rest-ftp-daemon/api/root.rb +10 -4
  8. data/lib/rest-ftp-daemon/api/status.rb +10 -0
  9. data/lib/rest-ftp-daemon/constants.rb +1 -4
  10. data/lib/rest-ftp-daemon/counters.rb +4 -2
  11. data/lib/rest-ftp-daemon/job.rb +11 -12
  12. data/lib/rest-ftp-daemon/job_queue.rb +10 -12
  13. data/lib/rest-ftp-daemon/launcher.rb +1 -0
  14. data/lib/rest-ftp-daemon/metrics.rb +10 -0
  15. data/lib/rest-ftp-daemon/notification.rb +5 -5
  16. data/lib/rest-ftp-daemon/paginate.rb +1 -0
  17. data/lib/rest-ftp-daemon/path.rb +2 -0
  18. data/lib/rest-ftp-daemon/remote.rb +5 -4
  19. data/lib/rest-ftp-daemon/remote_ftp.rb +3 -1
  20. data/lib/rest-ftp-daemon/remote_sftp.rb +4 -2
  21. data/lib/rest-ftp-daemon/views/dashboard_workers.haml +4 -1
  22. data/lib/rest-ftp-daemon/worker_pool.rb +6 -7
  23. data/lib/rest-ftp-daemon/workers/conchita.rb +8 -7
  24. data/lib/rest-ftp-daemon/workers/reporter.rb +24 -12
  25. data/lib/rest-ftp-daemon/workers/transfer.rb +8 -7
  26. data/lib/rest-ftp-daemon/workers/worker.rb +12 -0
  27. data/lib/rest-ftp-daemon.rb +10 -16
  28. data/lib/{rest-ftp-daemon → shared}/patch_array.rb +0 -0
  29. data/lib/{rest-ftp-daemon → shared}/patch_haml.rb +0 -2
  30. data/rest-ftp-daemon.gemspec +29 -28
  31. metadata +34 -24
  32. data/lib/rest-ftp-daemon/logger_pool.rb +0 -61
  33. data/lib/shared/conf.rb +0 -201
  34. data/lib/shared/logger_formatter.rb +0 -31
  35. data/lib/shared/logger_helper.rb +0 -78
  36. data/lib/shared/worker_base.rb +0 -112
@@ -1,6 +1,6 @@
1
-
2
1
  # Global libs
3
2
  require "rubygems"
3
+ require 'bmc-daemon-lib'
4
4
  require "json"
5
5
  require "haml"
6
6
  require "uri"
@@ -10,32 +10,20 @@ require "thread"
10
10
  require "newrelic_rpm"
11
11
 
12
12
 
13
- # Shared libs
14
- require_relative "shared/logger_formatter"
15
- require_relative "shared/logger_helper"
16
- require_relative "shared/conf"
17
- require_relative "shared/worker_base"
18
-
19
-
20
- # HAML and Array monkey-patching
21
- require_relative "rest-ftp-daemon/patch_array"
22
- require_relative "rest-ftp-daemon/patch_haml"
13
+ # Shared libs / monkey-patching
14
+ require_relative "shared/patch_array"
15
+ require_relative "shared/patch_haml"
23
16
 
24
17
 
25
18
  # Project's libs
26
19
  require_relative "rest-ftp-daemon/constants"
27
20
  require_relative "rest-ftp-daemon/exceptions"
28
21
  require_relative "rest-ftp-daemon/helpers"
29
- require_relative "rest-ftp-daemon/logger_pool"
30
22
  require_relative "rest-ftp-daemon/metrics"
31
23
  require_relative "rest-ftp-daemon/paginate"
32
24
  require_relative "rest-ftp-daemon/uri"
33
25
  require_relative "rest-ftp-daemon/job_queue"
34
26
  require_relative "rest-ftp-daemon/counters"
35
- require_relative "rest-ftp-daemon/worker_pool"
36
- require_relative "rest-ftp-daemon/workers/conchita"
37
- require_relative "rest-ftp-daemon/workers/reporter"
38
- require_relative "rest-ftp-daemon/workers/transfer"
39
27
  require_relative "rest-ftp-daemon/job"
40
28
  require_relative "rest-ftp-daemon/notification"
41
29
 
@@ -44,6 +32,12 @@ require_relative "rest-ftp-daemon/remote"
44
32
  require_relative "rest-ftp-daemon/remote_ftp"
45
33
  require_relative "rest-ftp-daemon/remote_sftp"
46
34
 
35
+ require_relative "rest-ftp-daemon/worker_pool"
36
+ require_relative "rest-ftp-daemon/workers/worker"
37
+ require_relative "rest-ftp-daemon/workers/conchita"
38
+ require_relative "rest-ftp-daemon/workers/reporter"
39
+ require_relative "rest-ftp-daemon/workers/transfer"
40
+
47
41
  require_relative "rest-ftp-daemon/api/job_presenter"
48
42
  require_relative "rest-ftp-daemon/api/jobs"
49
43
  require_relative "rest-ftp-daemon/api/dashboard"
File without changes
@@ -1,10 +1,8 @@
1
1
  module Haml
2
2
  class Buffer
3
3
  alias_method :haml_push_text, :push_text
4
-
5
4
  def push_text text, tab_change, dont_tab_up
6
5
  haml_push_text text.force_encoding("utf-8"), tab_change, dont_tab_up
7
6
  end
8
-
9
7
  end
10
8
  end
@@ -2,24 +2,24 @@
2
2
  Gem::Specification.new do |spec|
3
3
 
4
4
  # Project version
5
- spec.version = "0.302.3"
5
+ spec.version = "0.304.0"
6
6
 
7
7
  # Project description
8
- spec.name = "rest-ftp-daemon"
9
- spec.authors = ["Bruno MEDICI"]
10
- spec.email = "rest-ftp-daemon@bmconseil.com"
11
- spec.description = "This is a pretty simple FTP client daemon, controlled through a RESTful API"
12
- spec.summary = "RESTful FTP client daemon"
13
- spec.homepage = "http://github.com/bmedici/rest-ftp-daemon"
14
- spec.licenses = ["MIT"]
15
- spec.date = Time.now.strftime("%Y-%m-%d")
8
+ spec.name = "rest-ftp-daemon"
9
+ spec.authors = ["Bruno MEDICI"]
10
+ spec.email = "rest-ftp-daemon@bmconseil.com"
11
+ spec.description = "This is a pretty simple FTP client daemon, controlled through a RESTful API"
12
+ spec.summary = "RESTful FTP client daemon"
13
+ spec.homepage = "http://github.com/bmedici/rest-ftp-daemon"
14
+ spec.licenses = ["MIT"]
15
+ spec.date = Time.now.strftime("%Y-%m-%d")
16
16
 
17
17
 
18
18
  # List files and executables
19
- spec.files = `git ls-files -z`.split("\x0").reject{ |f| f == "dashboard.png"}
20
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
- spec.require_paths = ["lib"]
22
- spec.required_ruby_version = ">= 2.2.3"
19
+ spec.files = `git ls-files -z`.split("\x0").reject{ |f| f == "dashboard.png"}
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+ spec.required_ruby_version = ">= 2.2"
23
23
 
24
24
 
25
25
  # Development dependencies
@@ -28,21 +28,22 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency "rspec"
29
29
  spec.add_development_dependency "rubocop", "~> 0.32.0"
30
30
  spec.add_development_dependency "pry"
31
+ spec.add_development_dependency "http"
31
32
 
32
33
  # Runtime dependencies
33
- spec.add_runtime_dependency "json", "~> 1.8"
34
- spec.add_runtime_dependency "thin", "~> 1.7"
35
- spec.add_runtime_dependency "grape"
36
- spec.add_runtime_dependency "grape-entity"
37
- spec.add_runtime_dependency "settingslogic"
38
- spec.add_runtime_dependency "chamber"
39
- spec.add_runtime_dependency "rest-client", "~> 1.8"
40
- spec.add_runtime_dependency "api-auth"
41
- spec.add_runtime_dependency "haml"
42
- spec.add_runtime_dependency "net-sftp"
43
- spec.add_runtime_dependency "double-bag-ftps"
44
- spec.add_runtime_dependency "facter"
45
- spec.add_runtime_dependency "sys-cpu"
46
- spec.add_runtime_dependency "get_process_mem"
47
- spec.add_runtime_dependency "newrelic_rpm"
34
+ spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.2"
35
+ spec.add_runtime_dependency "json", "~> 1.8"
36
+ spec.add_runtime_dependency "thin", "~> 1.7"
37
+ spec.add_runtime_dependency "grape"
38
+ spec.add_runtime_dependency "grape-entity"
39
+ spec.add_runtime_dependency "settingslogic"
40
+ spec.add_runtime_dependency "rest-client", "~> 1.8"
41
+ spec.add_runtime_dependency "api-auth"
42
+ spec.add_runtime_dependency "haml"
43
+ spec.add_runtime_dependency "net-sftp"
44
+ spec.add_runtime_dependency "double-bag-ftps"
45
+ spec.add_runtime_dependency "facter"
46
+ spec.add_runtime_dependency "sys-cpu"
47
+ spec.add_runtime_dependency "get_process_mem"
48
+ spec.add_runtime_dependency "newrelic_rpm"
48
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-ftp-daemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.302.3
4
+ version: 0.304.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno MEDICI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-12 00:00:00.000000000 Z
11
+ date: 2016-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,49 +81,63 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: json
84
+ name: http
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bmc-daemon-lib
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '1.8'
103
+ version: '0.2'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '1.8'
110
+ version: '0.2'
97
111
  - !ruby/object:Gem::Dependency
98
- name: thin
112
+ name: json
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '1.7'
117
+ version: '1.8'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '1.7'
124
+ version: '1.8'
111
125
  - !ruby/object:Gem::Dependency
112
- name: grape
126
+ name: thin
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ">="
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '0'
131
+ version: '1.7'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ">="
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '0'
138
+ version: '1.7'
125
139
  - !ruby/object:Gem::Dependency
126
- name: grape-entity
140
+ name: grape
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - ">="
@@ -137,7 +151,7 @@ dependencies:
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
- name: settingslogic
154
+ name: grape-entity
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - ">="
@@ -151,7 +165,7 @@ dependencies:
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
- name: chamber
168
+ name: settingslogic
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - ">="
@@ -325,12 +339,9 @@ files:
325
339
  - lib/rest-ftp-daemon/job.rb
326
340
  - lib/rest-ftp-daemon/job_queue.rb
327
341
  - lib/rest-ftp-daemon/launcher.rb
328
- - lib/rest-ftp-daemon/logger_pool.rb
329
342
  - lib/rest-ftp-daemon/metrics.rb
330
343
  - lib/rest-ftp-daemon/notification.rb
331
344
  - lib/rest-ftp-daemon/paginate.rb
332
- - lib/rest-ftp-daemon/patch_array.rb
333
- - lib/rest-ftp-daemon/patch_haml.rb
334
345
  - lib/rest-ftp-daemon/path.rb
335
346
  - lib/rest-ftp-daemon/remote.rb
336
347
  - lib/rest-ftp-daemon/remote_ftp.rb
@@ -351,10 +362,9 @@ files:
351
362
  - lib/rest-ftp-daemon/workers/conchita.rb
352
363
  - lib/rest-ftp-daemon/workers/reporter.rb
353
364
  - lib/rest-ftp-daemon/workers/transfer.rb
354
- - lib/shared/conf.rb
355
- - lib/shared/logger_formatter.rb
356
- - lib/shared/logger_helper.rb
357
- - lib/shared/worker_base.rb
365
+ - lib/rest-ftp-daemon/workers/worker.rb
366
+ - lib/shared/patch_array.rb
367
+ - lib/shared/patch_haml.rb
358
368
  - rest-ftp-daemon.gemspec
359
369
  - spec/rest-ftp-daemon/features/dashboard_spec.rb
360
370
  - spec/rest-ftp-daemon/features/debug_spec.rb
@@ -374,7 +384,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
374
384
  requirements:
375
385
  - - ">="
376
386
  - !ruby/object:Gem::Version
377
- version: 2.2.3
387
+ version: '2.2'
378
388
  required_rubygems_version: !ruby/object:Gem::Requirement
379
389
  requirements:
380
390
  - - ">="
@@ -1,61 +0,0 @@
1
- require "logger"
2
- require "singleton"
3
-
4
- # Logger interface class to access logger though symbolic names
5
- module RestFtpDaemon
6
- class LoggerPool
7
- include Singleton
8
-
9
- def get pipe
10
- @loggers ||= {}
11
- @loggers[pipe] ||= create(pipe)
12
- end
13
-
14
- def create pipe
15
- # Compute logfile or STDERR, and declare what we're doing
16
- filename = logfile(pipe)
17
-
18
- # Create the logger and return it
19
- logger = Logger.new(filename, LOG_ROTATION) #, 10, 1024000)
20
- logger.progname = pipe.to_s.downcase
21
- logger.formatter = Shared::LoggerFormatter
22
-
23
- # Finally return this logger
24
- logger
25
-
26
- rescue Errno::EACCES
27
- puts "LoggerPool [#{pipe}] failed: access error"
28
- end
29
-
30
- protected
31
-
32
- def logfile pipe
33
- # Disabled if no valid config
34
- return nil unless Conf[:logs].is_a?(Hash)
35
-
36
- # Compute logfile and check if we can write there
37
- logfile = File.expand_path(Conf[:logs][pipe].to_s, Conf[:logs][:path].to_s)
38
-
39
- # Check that we'll be able to create logfiles
40
- if File.exists?(logfile)
41
- # File is there, is it writable ?
42
- unless File.writable?(logfile)
43
- puts "LoggerPool [#{pipe}] disabled: file not writable [#{logfile}]"
44
- return nil
45
- end
46
- else
47
- # No file here, can we create it ?
48
- logdir = File.dirname(logfile)
49
- unless File.writable?(logdir)
50
- puts "LoggerPool [#{pipe}] disabled: directory not writable [#{logdir}]"
51
- return nil
52
- end
53
- end
54
-
55
- # OK, return a clean file path
56
- puts "LoggerPool [#{pipe}] logging to [#{logfile}]"
57
- return logfile
58
- end
59
-
60
- end
61
- end
data/lib/shared/conf.rb DELETED
@@ -1,201 +0,0 @@
1
- # FIXME: files named with hyphens will not be found by Chamber for now
2
- require "chamber"
3
-
4
- module Shared
5
- class ConfigMissingParameter < StandardError; end
6
- class ConfigOtherError < StandardError; end
7
- class ConfigParseError < StandardError; end
8
- class ConfigMultipleGemspec < StandardError; end
9
- class ConfigMissingGemspec < StandardError; end
10
-
11
- class Conf
12
- extend Chamber
13
- PIDFILE_DIR = "/tmp/"
14
-
15
- class << self
16
- attr_accessor :app_env
17
- attr_reader :app_root
18
- attr_reader :app_libs
19
- attr_reader :app_name
20
- attr_reader :app_ver
21
- attr_reader :app_started
22
- attr_reader :app_spec
23
- attr_reader :files
24
- attr_reader :host
25
- end
26
-
27
- def self.init app_root
28
- # Permanent flags
29
- @initialized = true
30
- @app_started = Time.now
31
-
32
- # Default values
33
- @files ||= []
34
- @app_name ||= "app_name"
35
- @app_env ||= "production"
36
- @host ||= `hostname`.to_s.chomp.split(".").first
37
-
38
- # Store and clean app_root
39
- @app_root = File.expand_path(app_root)
40
-
41
- # Try to find any gemspec file
42
- matches = Dir["#{@app_root}/*.gemspec"]
43
- fail ConfigMissingGemspec, "gemspec file not found: #{gemspec_path}" if matches.size < 1
44
- fail ConfigMultipleGemspec, "gemspec file not found: #{gemspec_path}" if matches.size > 1
45
-
46
- # Load Gemspec (just the only match)
47
- @spec = Gem::Specification::load(matches.first)
48
- @app_name = @spec.name
49
- @app_ver = @spec.version
50
- fail ConfigMissingParameter, "gemspec: missing name" unless @app_name
51
- fail ConfigMissingParameter, "gemspec: missing version" unless @app_ver
52
-
53
- # Now we know app_name, initalize app_libs
54
- @app_libs = File.expand_path("lib/#{@app_name}/", @app_root)
55
-
56
- # Add other config files
57
- #add_default_config
58
- add_config generate(:config_defaults)
59
- add_config generate(:config_etc)
60
-
61
- # Return something
62
- return @app_name
63
- end
64
-
65
- def self.prepare args = {}
66
- ensure_init
67
-
68
- # Add extra config file and load them all
69
- add_config args[:config]
70
- reload!
71
-
72
- # Set Rack env
73
- ENV["RACK_ENV"] = @app_env.to_s
74
-
75
- # Set up encodings
76
- Encoding.default_internal = "utf-8"
77
- Encoding.default_external = "utf-8"
78
-
79
- # Init New Relic
80
- newrelic_logfile = File.expand_path(Conf[:logs][:newrelic].to_s, Conf[:logs][:path].to_s)
81
- prepare_newrelic self[:newrelic], newrelic_logfile
82
-
83
- # Try to access any key to force parsing of the files
84
- self[:dummy]
85
-
86
- rescue Psych::SyntaxError => e
87
- fail ConfigParseError, e.message
88
- rescue StandardError => e
89
- fail ConfigOtherError, "#{e.message} \n #{e.backtrace.to_yaml}"
90
- end
91
-
92
- # Reload files
93
- def self.reload!
94
- ensure_init
95
- load_files
96
- end
97
-
98
- def self.dump
99
- ensure_init
100
- to_hash.to_yaml(indent: 4, useheader: true, useversion: false )
101
- end
102
-
103
- # Direct access to any depth
104
- def self.at *path
105
- ensure_init
106
- path.reduce(Conf) { |m, key| m && m[key.to_s] }
107
- end
108
-
109
- def self.newrelic_enabled?
110
- ensure_init
111
- self[:newrelic] && self[:newrelic][:licence]
112
- end
113
-
114
- # Defaults generators
115
- def self.generate what
116
- ensure_init
117
- return case what
118
-
119
- when :user_agent
120
- "#{@app_name}/#{@app_ver}" if @app_name && @app_ver
121
-
122
- when :config_defaults
123
- "#{@app_root}/defaults.yml" if @app_root
124
-
125
- when :config_etc
126
- "/etc/#{@app_name}.yml" if @app_name
127
-
128
- when :process_name
129
- parts = [@app_name, @app_env]
130
- parts << self[:port] if self[:port]
131
- parts.join('-')
132
-
133
- when :pidfile
134
- process_name = self.generate(:process_name)
135
- File.expand_path "#{process_name}.pid", PIDFILE_DIR
136
-
137
- when :config_message
138
- config_defaults = self.generate(:config_defaults)
139
- config_etc = self.generate(:config_etc)
140
-
141
- "A default configuration is available (#{config_defaults}) and can be copied to the default location (#{config_etc}): \n sudo cp #{config_defaults} #{config_etc}"
142
-
143
- end
144
- end
145
-
146
-
147
- protected
148
-
149
- def self.load_files
150
- load files: @files, namespaces: { environment: @app_env }
151
- end
152
-
153
- def self.add_config path
154
- @files << File.expand_path(path) if path && File.readable?(path)
155
- end
156
-
157
- def self.prepare_newrelic section, logfile
158
- # Disable NewRelic if no config present
159
- unless self.newrelic_enabled?
160
- ENV["NEWRELIC_AGENT_ENABLED"] = "false"
161
- return
162
- end
163
-
164
- # Enable GC profiler
165
- GC::Profiler.enable
166
-
167
- # Enable module
168
- ENV["NEWRELIC_AGENT_ENABLED"] = "true"
169
- ENV["NEW_RELIC_MONITOR_MODE"] = "true"
170
-
171
- # License
172
- ENV["NEW_RELIC_LICENSE_KEY"] = section[:licence].to_s
173
-
174
- # Build NewRelic app_name if not provided as-is
175
- if section[:app_name]
176
- ENV["NEW_RELIC_APP_NAME"] = section[:app_name].to_s
177
- else
178
- stack = []
179
- stack << (section[:prefix] || @app_name)
180
- stack << section[:platform] if section[:platform]
181
- stack << @app_env
182
- text = stack.join('-')
183
- ENV["NEW_RELIC_APP_NAME"] = "#{text}-#{host};#{text}"
184
- end
185
-
186
- # Logfile
187
- ENV["NEW_RELIC_LOG"] = logfile.to_s if logfile
188
- end
189
-
190
- private
191
-
192
- def self.ensure_init
193
- # Skip is already done
194
- return if @initialized
195
-
196
- # Go through init if not already done
197
- self.init
198
- end
199
-
200
- end
201
- end
@@ -1,31 +0,0 @@
1
- module Shared
2
- class LoggerFormatter
3
-
4
- def self.call severity, datetime, progname, payload
5
- # Build common values
6
- timestamp = datetime.strftime(LOG_HEADER_TIME)
7
-
8
- # Build header
9
- header = sprintf LOG_HEADER_FORMAT,
10
- timestamp,
11
- Process.pid,
12
- severity,
13
- progname
14
-
15
- # If we have a bunch of lines, prefix them and send them together
16
- return payload.map do |line|
17
- "#{header}#{trimmed(line)}\n"
18
- end.join if payload.is_a?(Array)
19
-
20
- # Otherwise, just prefix the only line
21
- return "#{header}#{trimmed(payload)}\n"
22
- end
23
-
24
- protected
25
-
26
- def self.trimmed line
27
- line.to_s.rstrip[0..LOG_MESSAGE_TRIM].force_encoding(Encoding::UTF_8)
28
- end
29
-
30
- end
31
- end
@@ -1,78 +0,0 @@
1
- require "logger"
2
-
3
- module Shared
4
- module LoggerHelper
5
-
6
- protected
7
-
8
- def log_info message, details = nil
9
- build_messages Logger::INFO, message, details
10
- end
11
-
12
- def log_error message, details = nil
13
- build_messages Logger::ERROR, message, details
14
- end
15
-
16
- def log_debug message, details = nil
17
- build_messages Logger::DEBUG, message, details
18
- end
19
-
20
- alias info log_info
21
- alias error log_error
22
- alias debug log_debug
23
-
24
- private
25
-
26
- # Builds prefix if LOG_PREFIX_FORMAT defined and caller has log_prefix method to provide values
27
- def build_prefix
28
- # Skip if no values from user class
29
- return unless respond_to?(:log_prefix, true)
30
- values = log_prefix
31
-
32
- # Skip if no format defined
33
- return unless defined?('LOG_PREFIX_FORMAT')
34
- return unless LOG_PREFIX_FORMAT.is_a? String
35
-
36
- # Build prefix string
37
- LOG_PREFIX_FORMAT % values.map(&:to_s)
38
- end
39
-
40
- def build_messages severity, message, details = nil
41
- messages = []
42
- # messages << "/---------------------------------------"
43
- # messages << "severity: #{severity}"
44
- # messages << "message: #{message.class}"
45
- # messages << "details: #{details.class} #{details.inspect}"
46
- # messages << "ARRAY(#{details.count})" if details.is_a? Array
47
- # messages << "HASH(#{details.count})" if details.is_a? Hash
48
-
49
- prefix = build_prefix
50
-
51
- # Add main message
52
- messages << sprintf(LOG_MESSAGE_TEXT, prefix, message) if message
53
-
54
- # Add details from array
55
- details.each do |line|
56
- messages << sprintf(LOG_MESSAGE_ARRAY, prefix, line)
57
- end if details.is_a? Array
58
-
59
- # Add details from hash
60
- details.each do |key, value|
61
- messages << sprintf(LOG_MESSAGE_HASH, prefix, key, value)
62
- end if details.is_a? Hash
63
-
64
- # Return all that stuff
65
- # messages << "\\---------------------------------------"
66
- logger.add severity, messages
67
- end
68
-
69
- # def debug_lines lines, prefix = ''
70
- # if lines.is_a? Array
71
- # logger.debug lines.map{ |line| sprintf(LOG_MESSAGE_ARRAY, prefix, line) }
72
- # elsif lines.is_a? Hash
73
- # logger.debug lines.map{ |key, value| sprintf(LOG_MESSAGE_HASH, prefix, key, value) }
74
- # end
75
- # end
76
-
77
- end
78
- end