Есть несколько способов сделать это, но обычно я придерживаюсь следующих принципов.
- Они живут в
/lib
(если у вас много, вы можете создать /lib/clients
sub dir)
- У них есть имена, такие как
GeonamesClient
или GeonamesWrapper
- Это класс, который вы должны создать
- Они могут наследоваться от базового класса (или, возможно, смешивать некоторые базовые функции)
- HTTParty - это хороший способ пойти
Пример;
class ClientBase
# maybe we pass in a logger, or something
def initialize(options={})
end
# perhaps a central way to call the api
def call(method_name, *args)
end
end
class GeonamesClient < ClientBase
base_uri "www.geonames.org"
def postal_codes(country)
...
end
end
Затем вы создаете его и вызываете.
(возможно, что клиент может поддерживать некоторое состояние между вызовами)
client = GeonamesClient.new(:logger => Address.logger)
client.countries.each do |country|
client.postal_codes(country)
end