Если у вас есть метод Ruby вида:
def x
a = ...
b = ...
end
Возвращаемым значением этого метода всегда является значение, назначенное локальной переменной b
, и любое значение, назначенное локальной переменной a
, отбрасывается. Помните, что локальные переменные существуют только в пределах вашего блока, если не используются замыкания. За пределами этой области все содержащиеся в них значения отбрасываются, если не сохраняется иное.
Если вы хотите вернуть оба значения, просто сделайте это:
def self.create_customer_with_card arg
[
Curl.get("#{BaseURL}/customer") do |curl|
curl.headers["Authorization"] = authorization_header
curl.headers['Content-Type'] = 'application/json'
end,
Curl.get("#{BaseURL}/customer/660391") do |curl|
curl.headers["Authorization"] = authorization_header
curl.headers['Content-Type'] = 'application/json'
end
]
end
Тогда вы называете это так:
customer_list, customer = create_customer_with_card(arg)
Хотя arg
не используется, поэтому, пока это не так, вы должны удалить его.
Оказавшись в этой форме, становится совершенно очевидным, что более минимальная форма:
def self.create_customer_with_card
[ "/customer", "/customer/660391" ].map do |path|
Curl.get("#{BaseURL}#{path}") do |curl|
curl.headers["Authorization"] = authorization_header
curl.headers['Content-Type'] = 'application/json'
end
]
end
Где это использует map
для преобразования двух путей в два результата.