nah*_*nam 4 ruby-on-rails coinbase-api
我想使用这个api:https://github.com/coinbase/coinbase-ruby,第一步是初始化API,如下所示:
coinbase = Coinbase::Client.new(ENV['COINBASE_API_KEY'], ENV['COINBASE_API_SECRET'])
Run Code Online (Sandbox Code Playgroud)
我想知道放置此代码的最佳位置是什么,如果我把它放在那里,我将如何访问它?我希望这个变量(coinbase)可以在应用程序中随处访问.
谢谢!
pdo*_*obb 12
这个问题的答案实际上取决于您的用例和方法.但是,我的建议是创建一个服务对象(在DDD意义上)(参见该链接中名为"域对象不应该知道任何关于基础结构的内容"一节),它处理与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
Run Code Online (Sandbox Code Playgroud)
那么你可能会这样做,例如:
# From MyController#action_1
if CoinbaseService.do_something
# ...
else
# ...
end
Run Code Online (Sandbox Code Playgroud)
要么:
# From MyModel
def do_something
CoinbaseService.do_something_else
end
Run Code Online (Sandbox Code Playgroud)
要使服务对象正常工作,您可能需要app/services在application.rb文件中添加自动加载路径.我通常只是添加这个:
# config/application.rb
config.autoload_paths += %W(#{config.root}/app)
Run Code Online (Sandbox Code Playgroud)
我发现这种服务对象方法在组织上非常有益,效率更高(只需要调用1个新的Coinbase客户端),更容易测试(易于模拟调用Coinbase::Client),而且非常快乐:).
| 归档时间: |
|
| 查看次数: |
1179 次 |
| 最近记录: |