【问题标题】:Rails NoMethodError (undefined method `new' for Hyperclient:Module)Rails NoMethodError(Hyperclient:Module 的未定义方法“新”)
【发布时间】:2020-04-11 15:43:28
【问题描述】:

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

每当我运行rails c 时,我都会收到错误消息 NoMethodError (undefined method `new' for Hyperclient:Module)

在我的 gemfile

gem "hyperclient"

--跑bundle install

在模型中app/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

我查看了docs on hyperclient 并看到他们确实有一个 .new 的方法(也在他们的示例中)所以我知道这是我做错了,但我不确定还有什么可以尝试的?

在终端中打开 irb 时代码确实有效。

【问题讨论】:

    标签: ruby-on-rails rubygems


    【解决方案1】:

    你没有在你的Gemfile 中指定任何版本,所以Bundler 可能不会安装最新版本,这就是我猜这里可能发生的情况。

    您可以通过以下方式检查安装了哪个版本: cat Gemfile.lock | grep hyperclient

    您至少有两个选择:

    1) bundle update hyperclient - 这应该将您的 Gemfile.lock 更新到最新版本

    2) bundle remove hyperclient bundle add hyperclient --version "0.9" - 这将更新您的 Gemfile,然后运行 ​​bundle install,这将重新生成您的 Gemfile.lock

    建议使用第二个选项,因为最好始终为您使用的 gem 指定版本。

    【讨论】:

    • 非常感谢!这绝对让我走上了正确的道路,看起来我必须对 Hyperclient 也使用的 gem "Faraday" 做一些额外的更新——卸载并重新安装这两个 gem,并将 Gemfile 更新为gem "hyperclient", "~&gt; 0.9.1" gem "faraday", "~&gt; 0.17.3",这就是全部现在按我的意愿工作!
    • 很高兴能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2018-06-16
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多