Module: Gera::RatesWorker

Included in:
BitfinexRatesWorker, EXMORatesWorker
Defined in:
app/workers/concerns/gera/rates_worker.rb

Overview

Import rates from all sources

Constant Summary collapse

Error =
Class.new StandardError

Instance Method Summary collapse

Instance Method Details

#performObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/workers/concerns/gera/rates_worker.rb', line 12

def perform
  # Alternative approach is `Model.uncached do`
  ActiveRecord::Base.connection.clear_query_cache

  rates # Load before a translaction

  rate_source.with_lock do
    create_snapshot
    rates.each do |pair, data|
      save_rate pair, data
    end
    rate_source.update actual_snapshot_id: snapshot.id
  end

  CurrencyRatesWorker.new.perform

  snapshot.id

  # EXMORatesWorker::Error: Error 40016: Maintenance work in progress
rescue ActiveRecord::RecordNotUnique, RestClient::TooManyRequests => error
  raise error if Rails.env.test?

  logger.error error
  Bugsnag.notify error do |b|
    b.severity = :warning
    b. = { error: error }
  end
end