У меня есть этот модуль, который работает как адаптер для сторонней службы:
module Salesforce
class ConnectionService
class << self
def client
@client ||= Restforce.new(
# Connection Params
)
end
delegate :query, :create!, :update!, :upsert!, to: :client
end
end
end
Идея состоит в том, чтобы назвать его как:
Salesforce::ConnectionService.query('select things from remote service')
Моя цель заключается в том, потому чтоустановление соединения занимает некоторое время, я хотел бы иметь возможность запоминать его для повторного использования в запросах.
Проблема в том, что наличие переменных экземпляра в методах класса не является потокобезопасным.Поэтому я хотел бы знать, каким будет правильный способ сделать это.
Примечание: я знаю, что пока я не учитываю случай, когда соединение закрывается, я буду иметь дело с этим позже.