我有一个带有方法的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对象的最佳位置是什么?理想情况下,拥有一个全局对象会很棒,在应用程序启动时只会创建一次。
答案 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
# ...