在rake任务中使用pluralize方法

时间:2009-12-30 23:45:28

标签: ruby-on-rails ruby

我知道这看起来很傻,但我想在我正在设置的rake任务中调用一些Rails的Text Helpers。 (想象一下复数和循环方法:http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html

你如何在rake任务中提供这些功能,还是不容易实现?

4 个答案:

答案 0 :(得分:9)

在rake任务中扩展ActionView :: Helpers相当混乱 - 基本上包括Rake任务中的所有辅助方法。

ActionController::Base.helpers.pluralize(5, 'dog')

如果您没有计数而您只想复数一个词:

ActiveSupport::Inflector.pluralize('dog')

答案 1 :(得分:3)

添加ActiveSupport和ActionPack作为依赖项可能很费力,只需要方便的文本助手 - 除非您的Rakefile已经加载Rails - 但这是一个示例Rakefile:

require 'rubygems'
require 'activesupport'
require 'actionpack'
require 'action_view/helpers'

extend ActionView::Helpers

task :plural do
  puts "I have #{pluralize(5, "dog")}"
  puts "You have #{pluralize(1, "dog")}"
end

答案 2 :(得分:3)

在Rails 3中:

require 'active_support/inflections'
require 'action_view/helpers'
extend ActionView::Helpers

task :plural do
  puts "I have #{pluralize(5, "dog")}"
  puts "You have #{pluralize(1, "dog")}"
end

答案 3 :(得分:1)

如果您只想要字符串的复数形式,您可以直接在其上调用pluralize,而无需在rake任务中加载任何额外内容:

"dog".pluralize

然后你可以用这样的东西替换复数帮助器:

word = "dog"
if count == 1
  plural = "1 #{word}"
else
  plural = "#{count} #{word}".pluralize
end
puts plural