ruby-on-rails - 使用使用 API 的 Ruby Gem - 设置客户端

标签 ruby-on-rails ruby

我正在使用 Ruby on Rails。我正在尝试实现 https://www.kraken.com/help/api

如果不是很明显,我对实现 API 和 gem 的了解非常基础。

我转到“example-api-code”段落,然后到达 https://github.com/leishman/kraken_ruby

我包含 gem 并进行捆绑。

现在我们进入“使用”“创建客户端”

我假设我将以下内容放入config/kraken.rb

API_KEY = '3bH+M/nLp......'
API_SECRET = 'wQG+7Lr9b.....'

kraken = Kraken::Client.new(API_KEY, API_SECRET)

time = kraken.server_time
time.unixtime #=> 1393056191 

我想测试一些简单的东西,例如显示时间。

我将以下代码放入 view/welcome/index.html.erb 文件中,但随后出现错误。

<p><%= kraken.server_time %></p> 
-> ActionView::Template::Error (undefined local variable or method `kraken' for #<#<Class:0x007f95c6246ba8>:0x007f95c6245eb0>):

在我的 html.erb 文件中尝试此代码,它给了我另一个错误

<p><%= @kraken.server_time %></p>
-> ActionView::Template::Error (undefined method `server_time' for nil:NilClass):

------------------------------------------------------------ --------------------------------

编辑:解决方案尝试,TLDR NameError(未初始化的常量...


@格拉迪斯

使用你的解决方案我收到此错误

->! Unable to load application: SyntaxError: /app/app/controllers/welcome_controller.rb:5: dynamic constant assignment
->  API_KEY = '...'

所以我尝试了

def index
  @kraken = Kraken::Client.new('3bH+M/nLp...', 'wQG+7Lr9b...')
  time = @kraken.server_time
  time.unixtime #=> 1393056191 
end

并收到这个新错误

NameError (uninitialized constant WelcomeController::Kraken):
  app/controllers/welcome_controller.rb:5:in `index'

@帕维尔·特卡肯科

您的第一个解决方案(包装在类似单例的类中)给了我这个错误。

ActionView::Template::Error (uninitialized constant ActionView::CompiledTemplates::KrakenClient):
  app/views/welcome/index.html.erb:1:in `_app_views_welcome_index_html_erb__3584347874708863751_70226442404480'
    1: <p><%= KrakenClient.get.server_time %></p>

你的第二个解决方案(monkey-patch)给了我这个错误。

ActionView::Template::Error (uninitialized constant ActionView::CompiledTemplates::Kraken):
    1: <p><%= Kraken.client.server_time %></p>
  app/views/welcome/index.html.erb:1:in `_app_views_welcome_index_html_erb___3719740865851336982_69820265644620'

使用 Pavel 的方法将 /config/kraken.rb 移动到 /config/initializers/kraken.rb

将它包装在类似单例的类中会给我这个错误(事实上,它甚至不允许我托管服务器)

->When I host it on my local computer with bin/rails server
/config/initializers/kraken.rb:6:in `<class:KrakenClient>': uninitialized constant KrakenClient::Kraken (NameError)
/config/initializers/kraken.rb:1:in `<top (required)>'


->When I host it on heroku
Running: rake assets:precompile
rake aborted!
NameError: uninitialized constant KrakenClient::Kraken
/config/initializers/kraken.rb:5:in `<class:KrakenClient>'
/config/initializers/kraken.rb:1:in `<top (required)>'
...
/config/environment.rb:5:in `<top (required)>'

使用猴子补丁我收到此错误

ActionView::Template::Error (uninitialized constant Kraken::Client):
  1: <p><%= Kraken.client.server_time %></p>
config/initializers/kraken.rb:8:in `client'
app/views/welcome/index.html.erb:1:in `_app_views_welcome_index_html_erb___577296263292451462_70097201303100'

如果你让它在你的计算机上工作,我很乐意使用你的代码作为框架(我假设这比找出我这边的问题更容易)。

最佳答案

将此代码放入WelcomeController.rb

  def index
    API_KEY = '3bH+M/nLp......'
    API_SECRET = 'wQG+7Lr9b.....'
    @kraken = Kraken::Client.new(API_KEY, API_SECRET)
    time = @kraken.server_time
    time.unixtime #=> 1393056191 
  end

在此 Controller 下的 View 中放置:

<p><%= @kraken.server_time %></p>

关于ruby-on-rails - 使用使用 API 的 Ruby Gem - 设置客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867391/

相关文章:

ruby-on-rails - 在 options_for_select 标记的选择列表中包含第一项的空白

ruby-on-rails - 关于使用 ruby​​ 代码的 http POST api 调用的问题

ruby-on-rails - 如何在 Rails 上正确执行条件只读记录?

ruby-on-rails - 如何使用 activerecord 获取最后 N 条记录?

ruby-on-rails - 回形针/乘客 NotIdentifiedByImageMagickError :

activerecord - ActiveRecord 中的 SQL 长度?

ruby-on-rails - 删除用户尝试登录

ruby-on-rails - Rails 在事件记录中排序以进行搜索

ruby - 之间的差异。和 #

ruby - 在 Ruby 中,返回 'enumerable' 是什么意思