【发布时间】:2014-09-02 15:44:54
【问题描述】:
我在 Ruby on Rails 应用程序中使用 humanize_boolean gem。
gem 对我来说非常有用,除了一个重要的地方,那就是我的生产网络服务器。我不会因为我的问题而责怪这颗宝石,但我很乐意在这里提供其他人的眼球可以提供的任何帮助。
在视图模板中,我使用humanize。但我明白了
ActionView::Template::Error (undefined method `humanize' for true:TrueClass):
确实,humanize_boolean gem 没有被包括在内。我可以知道当我使用$LOADED_FEATURES 时,humanize_boolean.rb 不在列表中,尽管它正在开发中。
以下内容让我相信它应该可以工作:
- 当我使用像
RAILS_ENV=production rails c这样的生产控制台时,它可以工作。例如。true.humanize按预期打印“是”。 - 在我的 Gemfile 中,我的 gem 'humanize_boolean' 不在任何组中。因此,在生产中应该需要它。
- 它适用于由 Sidekiq 在生产中发送的电子邮件的电子邮件模板。
我使用 unicorn 作为应用服务器。
如果我手动要求控制器中的文件,它可以工作。例如
require '/home/ubuntu/app/shared/bundle/ruby/2.0.0/gems/humanize_boolean-0.0.1/lib/humanize_boolean/version.rb'
require '/home/ubuntu/app/shared/bundle/ruby/2.0.0/gems/humanize_boolean-0.0.1/lib/humanize_boolean.rb'
class ClientsController < ApplicationController
...
此外,如果我在生产中使用 webrick,它也可以工作,例如
$ RAILS_ENV=production rails s
所以不知何故这是独角兽的问题,但我没有其他此类问题。奇怪。
【问题讨论】:
-
没有充分的理由。特别是当它在 Sidekick 中工作时。您是否尝试将其关闭再打开?
-
最终成功了。我不知道我做了什么。我发誓我已经多次重启了独角兽,包括至少一次从 capistrano 进行的全面部署。
标签: ruby-on-rails gem require unicorn