monitorsys-tortoise 0.1.2 → 0.1.8

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: 1f7f1fadd67be6ee50f77ac4e3d33ee535cd9bed2e3d32699882036d871dea7f
4
- data.tar.gz: d56485aa996ee461bb7f06f1a4806a578d69350db60350416f98a7aeff0edc25
3
+ metadata.gz: 44cd0c73d4700459e76ece456a417277da42907c03fb2c88b25702b774923c57
4
+ data.tar.gz: 141b08a89a302fb2988708082102db200666079f44bf29686b827e4dc45f21b4
5
5
  SHA512:
6
- metadata.gz: d17d4221453aac0a4e5145e1bd3043ec9ea2c933b0456f7bced8b5024c8d4112554d70897c84d5272a28ac819f08da42332a5a236256c11696b552e7bd1a834e
7
- data.tar.gz: 112b1348e28de3c75429dfcd75ffa7cebd852b3cd0129d54975c4a50caa80ff901342c4c917c395eb4e6556be93f88f36f207a780c40b15e7dc0a6f553f71944
6
+ metadata.gz: a5314666308f613a693fd175190388a0f5907b2302de01c3902883fcafe284e231e81c5903fbb743e3afe162a373bdee7e7a31c3953f015dd846745824c319af
7
+ data.tar.gz: 840eef1ed34838a5f33d991e5adf1c7453758992a37edadc264102e6e8feda5c28f6612e10d344be4ff221a7e64c813e3b1ee31507819d2ba92d917508e72eca
data/Gemfile.lock CHANGED
@@ -1,7 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tortoise (0.1.0)
4
+ monitorsys-tortoise (0.1.7)
5
+ activerecord
6
+ fileutils
7
+ honeybadger
8
+ listen
9
+ mini_cache
10
+ rake (~> 12.0)
11
+ rest-client
12
+ sqlite3
5
13
 
6
14
  GEM
7
15
  remote: https://rubygems.org/
@@ -63,10 +71,10 @@ DEPENDENCIES
63
71
  honeybadger
64
72
  listen
65
73
  mini_cache
74
+ monitorsys-tortoise!
66
75
  rake (~> 12.0)
67
76
  rest-client
68
77
  sqlite3
69
- tortoise!
70
78
 
71
79
  BUNDLED WITH
72
80
  2.1.4
@@ -0,0 +1,11 @@
1
+ unless ENV['TORTOISE_HONEYBADGER_API_KEY'].to_s.empty?
2
+ require 'honeybadger/ruby'
3
+
4
+ Honeybadger.configure do |config|
5
+ config.api_key = ENV['TORTOISE_HONEYBADGER_API_KEY'].to_s.strip
6
+ end
7
+
8
+ at_exit do
9
+ Honeybadger.stop
10
+ end
11
+ end
@@ -15,14 +15,16 @@ namespace :tortoise do
15
15
  t.string :public_informations_path
16
16
  t.string :user
17
17
  t.string :password
18
- t.integer :retry_time
19
18
  t.string :app_user
20
19
  t.string :app_password
20
+ t.integer :retry_time
21
+ t.integer :max_retry
21
22
  t.timestamps
22
23
  end
23
24
  create_table :invoices do |t|
24
25
  t.string :file
25
26
  t.string :status
27
+ t.integer :attempt_number
26
28
  t.timestamps
27
29
  end
28
30
  end
data/lib/tortoise.rb CHANGED
@@ -2,7 +2,6 @@ require 'listen'
2
2
  require 'rest-client'
3
3
  require 'fileutils'
4
4
  require 'mini_cache'
5
- require 'honeybadger' unless ENV['HONEYBADGER_API_KEY'].to_s.empty?
6
5
 
7
6
  require_relative '../config/sqllite3'
8
7
  require_relative 'tortoise/jobs/upload_job'
@@ -16,6 +15,8 @@ require_relative 'tortoise/services/bulk_loader'
16
15
  require_relative 'tortoise/services/initial_loader'
17
16
  require_relative 'tortoise/services/listener'
18
17
  require_relative 'tortoise/services/loader'
18
+ require_relative 'tortoise/version'
19
+ require_relative '../config/honeybadger'
19
20
 
20
21
  module Tortoise
21
22
 
@@ -25,22 +25,28 @@ module Tortoise
25
25
  private
26
26
 
27
27
  def process
28
- invoice.update(status: Invoice::STARTED)
28
+ invoice.update(status: Invoice::STARTED, attempt_number: invoice.attempt_number + 1)
29
+ api_helper.upload(invoice.file)
30
+ invoice.update(status: Invoice::DONE)
29
31
 
30
- begin
31
- api_helper.upload(invoice.file)
32
- invoice.update(status: Invoice::DONE)
32
+ puts "A nota #{invoice.file} foi enviada com sucesso!"
33
+ rescue StandardError => e
34
+ puts "Um erro aconteceu!", e
33
35
 
34
- puts "A nota #{invoice.file} foi enviada com sucesso!"
35
- rescue StandardError => e
36
- puts "Um erro aconteceu!", e
36
+ Honeybadger.notify(e, context: {
37
+ configuration: Tortoise::Configuration.all.map(&:to_s),
38
+ directories: Tortoise::Directory.all.map(&:to_s),
39
+ invoice: Tortoise::Invoice.where(id: invoice.id).map(&:to_s),
40
+ version: Tortoise::VERSION
41
+ }) unless ENV['TORTOISE_HONEYBADGER_API_KEY'].to_s.empty?
37
42
 
38
- Honeybadger.notify(e) unless ENV['HONEYBADGER_API_KEY'].to_s.empty?
43
+ invoice.update(status: Invoice::FAILED)
39
44
 
40
- invoice.update(status: Invoice::FAILED)
45
+ UploadJob.new(invoice.id).perform_in(configuration.default_retry_time) if retry?
46
+ end
41
47
 
42
- UploadJob.new(invoice.id).perform_in(configuration.default_retry_time)
43
- end
48
+ def retry?
49
+ invoice.attempt_number < configuration.default_max_retry
44
50
  end
45
51
 
46
52
  def invoice
@@ -20,6 +20,23 @@ module Tortoise
20
20
  (retry_time || 5).minutes
21
21
  end
22
22
 
23
+ def default_max_retry
24
+ max_retry || 5
25
+ end
26
+
27
+ def to_s
28
+ {
29
+ api_path: api_path,
30
+ token_path: token_path,
31
+ upload_path: upload_path,
32
+ public_informations_path: public_informations_path,
33
+ user: user,
34
+ password: read_attribute(:password),
35
+ app_user: app_user,
36
+ app_password: read_attribute(:app_password)
37
+ }
38
+ end
39
+
23
40
  private
24
41
 
25
42
  def crypt
@@ -2,6 +2,12 @@ module Tortoise
2
2
  class Directory < ApplicationRecord
3
3
  after_save :create_folder
4
4
 
5
+ def to_s
6
+ {
7
+ folder_path: folder_path
8
+ }
9
+ end
10
+
5
11
  private
6
12
 
7
13
  def create_folder
@@ -3,5 +3,13 @@ module Tortoise
3
3
  STARTED = 'started'
4
4
  DONE = 'done'
5
5
  FAILED = 'failed'
6
+
7
+ def to_s
8
+ {
9
+ file: file,
10
+ status: status,
11
+ attempt_number: attempt_number
12
+ }
13
+ end
6
14
  end
7
15
  end
@@ -25,10 +25,15 @@ module Tortoise
25
25
  return cached_database unless cached_database.nil?
26
26
  return if public_informations_path.nil?
27
27
 
28
- response = RestClient.get(public_informations_path)
28
+ response = RestClient.get(
29
+ public_informations_path,
30
+ {
31
+ Authorization: "Bearer #{token}"
32
+ }
33
+ )
29
34
  cache.set(
30
35
  DATABASE_CACHE_KEY,
31
- JSON.parse(response.body)['licensa']['database'],
36
+ JSON.parse(response.body)['database'],
32
37
  expires_in: CACHE_EXPIRES
33
38
  )
34
39
  end
@@ -47,8 +52,6 @@ module Tortoise
47
52
  Authorization: "Bearer #{token}"
48
53
  }
49
54
  )
50
- rescue RestClient::Exception => e
51
- e.response
52
55
  end
53
56
 
54
57
  private
@@ -1,21 +1,27 @@
1
1
  module Tortoise
2
2
  class BulkLoader
3
- attr_reader :files, :async
3
+ attr_reader :files
4
4
 
5
- def initialize(files, async: true)
5
+ def initialize(files)
6
6
  @files = files
7
- @async = async
8
7
  end
9
8
 
10
- def self.load(files, async: true)
11
- new(files, async: async).load
9
+ def self.load(files)
10
+ new(files).load
12
11
  rescue StandardError => e
13
- Honeybadger.notify(e) unless ENV['HONEYBADGER_API_KEY'].to_s.empty?
12
+ puts "Um erro aconteceu!", e
13
+
14
+ Honeybadger.notify(e, context: {
15
+ files: files,
16
+ configuration: Tortoise::Configuration.all.map(&:to_s),
17
+ directories: Tortoise::Directory.all.map(&:to_s),
18
+ version: Tortoise::VERSION
19
+ }) unless ENV['TORTOISE_HONEYBADGER_API_KEY'].to_s.empty?
14
20
  end
15
21
 
16
22
  def load
17
23
  files.each do |file|
18
- Tortoise::Loader.load(file, async: async)
24
+ Tortoise::Loader.load(file)
19
25
  end
20
26
  end
21
27
  end
@@ -3,7 +3,7 @@ module Tortoise
3
3
  def load
4
4
  return if directories.empty?
5
5
 
6
- Tortoise::BulkLoader.load(files, async: false)
6
+ Tortoise::BulkLoader.load(files)
7
7
  end
8
8
 
9
9
  private
@@ -1,34 +1,25 @@
1
1
  module Tortoise
2
2
  class Loader
3
- attr_reader :file, :async
3
+ attr_reader :file
4
4
 
5
- def initialize(file, async: true)
5
+ def initialize(file)
6
6
  @file = file
7
- @async = async
8
7
  end
9
8
 
10
- def self.load(file, async: true)
11
- new(file, async: async).load
9
+ def self.load(file)
10
+ new(file).load
12
11
  end
13
12
 
14
13
  def load
15
14
  return if exists?
16
15
 
17
- upload_job.try(job_method)
16
+ Tortoise::UploadJob.new(invoice.id).perform_now
18
17
  end
19
18
 
20
19
  private
21
20
 
22
- def upload_job
23
- Tortoise::UploadJob.new(invoice.id)
24
- end
25
-
26
- def job_method
27
- async ? :perform : :perform_now
28
- end
29
-
30
21
  def invoice
31
- @invoice ||= Tortoise::Invoice.create!(file: file, status: Invoice::STARTED)
22
+ @invoice ||= Tortoise::Invoice.create!(file: file, status: Invoice::STARTED, attempt_number: 0)
32
23
  end
33
24
 
34
25
  def exists?
@@ -1,3 +1,3 @@
1
1
  module Tortoise
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.8"
3
3
  end
data/tortoise.gemspec CHANGED
@@ -10,6 +10,15 @@ Gem::Specification.new do |spec|
10
10
  spec.homepage = 'http://monitorsys.com.br'
11
11
  spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
12
12
 
13
+ spec.add_dependency('rake', '~> 12.0')
14
+ spec.add_dependency('listen')
15
+ spec.add_dependency('rest-client')
16
+ spec.add_dependency('sqlite3')
17
+ spec.add_dependency('activerecord')
18
+ spec.add_dependency('fileutils')
19
+ spec.add_dependency('mini_cache')
20
+ spec.add_dependency('honeybadger')
21
+
13
22
  # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
14
23
 
15
24
  spec.metadata['homepage_uri'] = spec.homepage
metadata CHANGED
@@ -1,15 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monitorsys-tortoise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - João Mangilli
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-10 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-02-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '12.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '12.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: listen
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rest-client
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activerecord
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: fileutils
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
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: mini_cache
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: honeybadger
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
13
125
  description:
14
126
  email:
15
127
  - joao-luis-mangilli@hotmail.com
@@ -22,6 +134,7 @@ files:
22
134
  - Gemfile.lock
23
135
  - README.md
24
136
  - Rakefile
137
+ - config/honeybadger.rb
25
138
  - config/sqllite3.rb
26
139
  - lib/tasks/migrate.rake
27
140
  - lib/tortoise.rb