我在Ruby on Rails应用程序中使用humanize_boolean 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
按预期打印“是”。我正在使用独角兽作为应用服务器。
如果我手动要求控制器中的文件,它可以正常工作。 E.g。
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
所以不知怎的,这是独角兽的问题,但我没有其他这样的问题。奇异。
答案 0 :(得分:1)
尝试将此添加到您的unicorn.rb文件中:
before_exec do |server|
ENV["BUNDLE_GEMFILE"] = "/path/to/app/current/Gemfile"
end
这应该确保在unicorn启动之前加载gemfile。
答案 1 :(得分:0)
这并没有具体回答你的问题,但我建议你跳过宝石并使用帮手:
def human_boolean(boolean)
boolean ? "Yes" : "No"
end
human_boolean(true)
# => "Yes"
human_boolean(false)
# => "No"
我只是建议这样做,因为宝石被如此简单的代码所压制。