Я создаю класс-обёртку, чтобы сделать http-вызов с использованием Excon. в моем классе контроллера я создаю экземпляр и вызываю метод для этого класса. во время отладки я заметил, что в методе post переменная @client класса клиента всегда равна nil.
Я изменяю код (см. Подход 2), создаю экземпляр переменной @cient с новым экземпляром Excon и использую эту переменную в том же методе, тогда она не равна нулю. Я не уверен, почему в подходе сначала я могу получить доступ к переменной @client, которая установлена в методе initialize. есть идеи?
подход 1
module API
class rclient
def initialize
@client ||= Excon.new('http://example.com')
end
def post
#error @client is nil
post_response = @client.Post(path:'/create', body:{date:'somedata'});
end
end
end
class my controller < ApplicationController
def create
req = API::rclient.new()
req.post
end
end
подход 2
module API
class rclient
def post
@client = Excon.new('http://example.com')
post_response = @client.Post(path:'/create', body:{date:'somedata'});
end
end
end
class my controller < ApplicationController
def create
req = API::rclient.new()
req.post
end
end