【发布时间】:2016-09-10 10:55:00
【问题描述】:
我正在使用一个名为 breadcrumbs_on_rails 的 gem,为了使用这个 gem 的视图,我在我的 lib/ 目录中创建了一个名为:CustomBreadcrumbsBuilder 的类:
class CustomBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
def render
@context.render "/layouts/breadcrumbs", elements: @elements
end
end
我在application.html.haml 文件中使用这个类以如下方式呈现布局:
%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"
但没有任何工作。同样,它在开发模式下工作,但在生产中失败。
我使用的是 Rails 5.0.0 和 ruby 2.2.3,在生产中,我使用 Puma 和 Nginx 来处理请求。
【问题讨论】:
-
你重启过生产 Rails 服务器了吗?
-
@max 没问题。不止一次。
-
你能在生产服务器上运行
bin/rails r 'puts ActiveSupport::Dependencies.autoload_paths'吗? -
config.autoload_paths += %W(#{config.root}/lib/)和config.autoload_paths << "#{Rails.root}/lib"在语义上不同,但应该产生相同的结果。两者都只是将元素附加到数组中。 -
@max 是的,它列出了:
/home/deploy/iitan/lib
标签: ruby-on-rails ruby ruby-on-rails-5