【发布时间】:2021-05-07 12:18:35
【问题描述】:
有点困惑 - 我有一个应用程序,它使用我编写的一个非常简单的 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>'
profiles_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'
知道是什么导致了这个问题吗?
【问题讨论】:
-
我不知道,这很奇怪。我不知道如何重现您的错误。也许您的测试命令(例如
rake test)实际上正在运行另一个版本的 ruby,因此没有安装所有 gem 依赖项? -- 你可以尝试在前面加上bundle exec,这是肯定的。 -
您也可以尝试在文件顶部添加
require 'ui_avatars',尽管这不应该是必要的。 -
或者您可能正在使用某种预引导(例如
zeus)导致您的测试环境出现问题?您可能需要重新启动预引导程序(如果有)以获取新的库依赖项。 -
好吧,干得好@TomLord - 我尝试根据安全建议升级到 ruby 2.6.7,但它无法在 macOS 上编译;所以我的 .ruby-version 文件中有 2.6.7,而我实际上仍在使用 2.6.6。修复我的 .ruby-version 文件已解决问题!
标签: ruby-on-rails ruby minitest ruby-on-rails-6.1