ActiveView::Template::Error(未初始化的常量 CustomBreadcrumbsBuilder)

ActiveView::Template::Error ( uninitialized constant CustomBreadcrumbsBuilder )

我正在使用名为 breadcrumbs_on_rails 的 gem,为了为此 gem 使用视图,我创建了一个名为 class 的视图:CustomBreadcrumbsBuilder 在我的 lib/ 目录中作为研究员:

class CustomBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
  def render
    @context.render "/layouts/breadcrumbs", elements: @elements
  end
end

我在 application.html.haml 文件中使用这个 class 以下列方式呈现布局:

%main
  = render_breadcrumbs builder: ::CustomBreadcrumbsBuilder

它在开发环境中成功加载了文件,但在生产环境中,它产生了以下错误:

ActionView::Template::Error (uninitialized constant CustomBreadcrumbsBuilder):

我尝试了以下方法:

在我的 config/application.rb 中添加了以下内容:

config.autoload_paths += %W(#{config.root}/lib/)

config.autoload_paths << "#{Rails.root}/lib"

但是 none 的东西正在工作。同样,它在开发模式下工作,但在生产模式下失败。

我正在使用 Rails 5.0.0 和 ruby 2.2.3,在生产环境中,我正在使用 Puma 和 Nginx 来处理请求。

我仍然不知道确切的答案,但我认为 autoload_paths 是在加载视图文件后加载的,因此 Rails 无法找到 [=13] 中使用的常量=] 并在 lib/ 目录中定义。所以我使用了以下内容:

config.eager_load_paths += %W(#{config.root}/lib/)

毫无疑问,它现在正在运行。

我发现的另一个解决方案是直接在视图文件中要求相应的文件,就像我在 application.html.haml 中添加了以下行:

require '/home/arslanali/personalproject/lib/custom_breadcrumbs_builder.rb'

而且它也有效。