gpt4 book ai didi

ruby-on-rails - 哪里是初始化 API 的好地方?

转载 作者:行者123 更新时间:2023-12-04 21:52:11 24 4
gpt4 key购买 nike

我想使用这个 api:https://github.com/coinbase/coinbase-ruby第一步是初始化 API,如下所示:

coinbase = Coinbase::Client.new(ENV['COINBASE_API_KEY'], ENV['COINBASE_API_SECRET'])

我想知道放置此代码的最佳位置是什么,如果我将它放在“那里”,我将如何访问它?我希望这个变量(coinbase)可以在应用程序中的任何地方访问。

谢谢!

最佳答案

这个问题的答案实际上取决于您的用例和您的方法。然而,我的建议是创建一个 Service Object (in the DDD sense) (请参阅该链接中名为“域对象不应该了解底层基础设施的任何内容”的部分),它处理与 Coinbase API 的所有通信。然后,在这个服务对象中,你可以简单地初始化一次 Coinbase::Client 对象,无论你调用它多少次。下面是一个例子:

# app/services/coinbase_service.rb
class CoinbaseService
cattr_reader :coinbase_client, instance_accessor: false do
Coinbase::Client.new(ENV['COINBASE_API_KEY'], ENV['COINBASE_API_SECRET'])
end

def self.do_something
coinbase_client.do_something_in_their_api
end

def self.do_something_else
coinbase_client.do_something_else_in_their_api
end
end

那么你可能会这样做,例如:
# From MyController#action_1
if CoinbaseService.do_something
# ...
else
# ...
end

或者:
# From MyModel
def do_something
CoinbaseService.do_something_else
end

要使服务对象正常工作,您可能需要添加 app/services到 application.rb 文件中的自动加载路径。我通常只是添加这个:
# config/application.rb
config.autoload_paths += %W(#{config.root}/app)

我发现这种服务对象方法在组织上非常有益,效率更高(只需要 1 次调用新的 Coinbase 客户端),更容易测试(易于模拟调用 Coinbase::Client),而且非常愉快:)。

关于ruby-on-rails - 哪里是初始化 API 的好地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25595560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com