哪里需要宝石?

时间:2014-11-28 08:37:21

标签: ruby-on-rails ruby activerecord

我有一个带有方法的ActiveRecord类。我想重构这个方法并将其分成子程序方法。方法大致如下:

def analyze
  require 'mygem'
  sentences = get_sentences(text)
  sentences.each do |sentence|
    words = get_words(sentence)
    words.each do |word|
      # Use gem
      # For example
      my_gem = MyGem.new
      my_gem.do_something(word)
    end
  end
end

所以基本上这个方法从文本中获取句子然后从中获取所有单词并在每个单词上使用gem。我想将单词处理提取到一个单独的方法中。需要宝石并实例化它的'提取的方法中的对象效率低下,因为它将在每次调用时创建实例。那么实例化gem对象的最佳位置是什么?理想情况下,拥有一个全局对象会很棒,在应用程序启动时只会创建一次。

1 个答案:

答案 0 :(得分:1)

您可以将my_gem指定为类对象

#...
  private
  def my_gem
    # create class object my_gem, and if not defined define it
    # it will be shared through Class that it resides in 
    @@my_gem ||= MyGem.new
  end
# ...