0

有点令人困惑 - 我有一个应用程序,它使用我编写的一个非常简单的 gem (UIAvatars) 来生成一个 Avatar API 的 URL。这在我的 Development rails 应用程序中明显有效(显示 Avatar 没有问题)但是当我尝试运行我的控制器测试时,它会导致如下错误:

Error:
InitiativesControllerTest#test_should_get_new:
ActionView::Template::Error: uninitialized constant ProfilesHelper::UIAvatars
    app/helpers/profiles_helper.rb:17:in `profile_image_link_for'
    app/views/layouts/_header.html.erb:62
    app/views/layouts/application.html.erb:23
    test/controllers/initiatives_controller_test.rb:15:in \`block in <class:InitiativesControllerTest>'

profile_helper 中的方法是:

  def profile_image_link_for(profile, **options)

    image_tag(
      UIAvatars.generateURL(name: profile.full_name, size: "128", background: "random"), 
      options
      ).html_safe

  end

bundle 说它已安装:

% bundle info ui_avatars
  * ui_avatars (0.0.1)
    Summary: Generate avatars with initials from names using https://ui-avatars.com
    Homepage: https://rubygems.org/gems/ui_avatars
    Path: /Users/thatsme/.rvm/gems/ruby-2.6.6/gems/ui_avatars-0.0.1

它在我的 Gemfile 默认组中

gem 'ui_avatars'

知道什么可能导致这个问题吗?

4

1 回答 1

0

答案是.ruby-versionruby​​ (2.6.7) 的版本与我实际使用的 (2.6.6) 不同,因此运行 minitest 时 ruby​​ 找不到安装在预期路径中的 gem。

(为什么它仍然在 Rails 中工作是另一天的问题)。

于 2021-05-07T12:48:12.230 回答