monitorsys-tortoise 0.1.1 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24fa5667336b7e80ae1b10d2e19fd0a04074c9518ceb88f589ce42fed72cccfb
4
- data.tar.gz: eebcab7a46f1519cb23e3b9203daef3bba56d6be1ee92ab32b5150c1fc6ccd42
3
+ metadata.gz: a666f4cec12d119f6b259253d8c6c57431c13903262bd9eb079eb47d46024048
4
+ data.tar.gz: 8ca38c24e3445e8f0c066e181ec5079365915a9d82a48093c83d21159d129f17
5
5
  SHA512:
6
- metadata.gz: 05e751c10c22d0c6d07ce3585123011dd6c634b87d5420ee1f7a87e53b989196e63b09998d5dd0d61cf64564c2565bb485011c81d2275b3e464a79bf29d8ba26
7
- data.tar.gz: 37c598d3ce0efc914c76f2030d5fc88e7477a96cc126ac71d14e91feda19a73aea7e72176e8ac7ed892b5e267ff9df86ecc162cf4bc1bf2d2973877fd4fecf25
6
+ metadata.gz: dce8d4bad7a8929816d81276e0e00ea95b06d3940f141e6e584bd3d093151f07648ee093e33de36243d7932550bdf6c0ea1d6913b00812f33a941ba67769cb2b
7
+ data.tar.gz: 5a234d7025ce558004a71c05f109127c414c875668c3bf98c5c56553dbf5c1201b1ebbcb6182074de47c73408c31895a019e1e597dcde609387c2c7e53fc7a6a
data/.gitignore CHANGED
@@ -6,4 +6,5 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
- tortoise_production
9
+ tortoise_production
10
+ *.gem
@@ -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
@@ -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,7 @@ 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 '../config/honeybadger'
19
19
 
20
20
  module Tortoise
21
21
 
@@ -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
@@ -9,7 +9,7 @@ module Tortoise
9
9
  private
10
10
 
11
11
  def listener
12
- @listener ||= Listen.to(*directories) do |_m, added, _r|
12
+ @listener ||= Listen.to(*directories, latency: 5, wait_for_delay: 5) do |_m, added, _r|
13
13
  Tortoise::BulkLoader.load(added)
14
14
  end
15
15
  end
@@ -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.1"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -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.1
4
+ version: 0.1.7
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-01-22 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
@@ -37,7 +150,6 @@ files:
37
150
  - lib/tortoise/services/listener.rb
38
151
  - lib/tortoise/services/loader.rb
39
152
  - lib/tortoise/version.rb
40
- - monitorsys-tortoise-0.1.0.gem
41
153
  - tortoise.gemspec
42
154
  homepage: http://monitorsys.com.br
43
155
  licenses: []