Ruby on rails Rails NoMethodError(对于Hyperclient:Module,未定义方法“new'”)

Ruby on rails Rails NoMethodError(对于Hyperclient:Module,未定义方法“new'”),ruby-on-rails,rubygems,Ruby On Rails,Rubygems,这是一个相当“新手”的问题,但我一直在搜索,似乎找不到任何东西来解决在rails应用程序中使用的错误,在我的模型的方法中 每当我运行rails c时,我都会收到错误消息 NoMethodError(对于Hyperclient:Module,未定义方法“new”) 在我的文件中 gem "hyperclient" --运行了bundle安装 在modelapp/models/artwork.rb中 class Artwork < ApplicationRecord require

这是一个相当“新手”的问题,但我一直在搜索,似乎找不到任何东西来解决在rails应用程序中使用的错误,在我的模型的方法中

每当我运行
rails c
时,我都会收到错误消息
NoMethodError(对于Hyperclient:Module,未定义方法“new”)

在我的文件中

gem "hyperclient"
--运行了
bundle安装

在modelapp/models/artwork.rb中

class Artwork < ApplicationRecord
    require "hyperclient"

    def self.test_artsy
        api = Hyperclient.new('https://api.artsy.net/api') do |api|
          puts api
        end
    end
end
class Artwork
我已经看过了,并且看到他们确实有一个.new的方法(也在他们的示例中),所以我知道这是我做得不正确的,但我不确定还有什么可以尝试的


在终端中打开irb时,代码确实起作用。

您的
Gemfile
中没有指定任何版本,因此可能会发生
Bundler
不会安装最新版本的情况,我猜这就是此处可能发生的情况

您可以通过执行以下操作来检查安装了哪个版本:
cat Gemfile.lock | grep hyperclient

您在此处至少有两个选项:

(一)
bundle update hyperclient
-这将更新您的
Gemfile.lock
至最新版本

(二)
捆绑删除超级客户端
bundle add hyperclient--version“0.9”
-这将更新您的Gemfile,然后运行
bundle install
,重新生成您的
Gemfile.lock


建议使用第二个选项,因为始终为正在使用的gems指定版本是一种良好的做法。

您在
Gemfile
中未指定任何版本,因此可能会发生
Bundler
无法安装最新版本的情况,我猜这就是此处可能发生的情况

您可以通过执行以下操作来检查安装了哪个版本:
cat Gemfile.lock | grep hyperclient

您在此处至少有两个选项:

(一)
bundle update hyperclient
-这将更新您的
Gemfile.lock
至最新版本

(二)
捆绑删除超级客户端
bundle add hyperclient--version“0.9”
-这将更新您的Gemfile,然后运行
bundle install
,重新生成您的
Gemfile.lock


建议使用第二个选项,因为始终为您使用的gems指定版本是一个很好的做法。

非常感谢!这无疑让我走上了正确的道路,看起来我不得不对Hyperclient也使用的gem“Faraday”做一些额外的更新——卸载并重新安装这两个gem,并将gem文件更新为
gem“Hyperclient”、“~>0.9.1”gem“Faraday”、“~>0.17.3”
,现在一切都按照我的意愿运行了!我很高兴能帮上忙!非常感谢你!这无疑让我走上了正确的道路,看起来我不得不对Hyperclient也使用的gem“Faraday”做一些额外的更新——卸载并重新安装这两个gem,并将gem文件更新为
gem“Hyperclient”、“~>0.9.1”gem“Faraday”、“~>0.17.3”
,现在一切都按照我的意愿运行了!我很高兴能帮上忙!