sidekiq和rails truncate helper

时间:2015-03-03 14:40:58

标签: ruby-on-rails ruby ruby-on-rails-4 sidekiq truncate

我正在尝试使用Sidekiq中的Rails truncate helper。在Sidekiq之外一切正常但在我试图处理它给我的工作时在sidekiq内部:

NoMethodError: undefined method `each_byte' for nil:NilClass

这是因为Sidekiq包含它自己的truncate方法:

http://www.rubydoc.info/gems/sidekiq/3.3.1/Sidekiq/WebHelpers:truncate

问题是它与Rails助手相比太简单了,我需要能够截断单词而不是字符。所以我试着明确地使用这个方法:

content = ActionView::Helpers::TextHelper.truncate(content.gsub(/\n/, ''), :length => 126, :separator => ' ', :omission => '', :escape => false)

但这仍然给我带来了与以前相同的错误。

此外,我还尝试将帮助程序包含在类的顶部

include ActionView::Helpers::TextHelper

但这似乎没有任何区别。任何想法如何在Sidekiq中使用Rails截断方法?

谢谢,

1 个答案:

答案 0 :(得分:2)

只需通过Source: hide | on GitHub上方的链接打开源代码:

def truncate(text, options = {}, &block)
  if text
    length  = options.fetch(:length, 30)

    content = text.truncate(length, options) // <--
    content = options[:escape] == false ? content.html_safe : ERB::Util.html_escape(content)
    content << capture(&block) if block_given? && text.length > length
    content
  end
end

正如您可以使用truncate method of String看到此方法。只需使用它而不是ActionView助手。