如何通过Ruby中的类方法初始化类变量

Ser*_*lov 2 ruby ruby-on-rails

有没有一种简单的方法可以通过Ruby中的类方法初始化类变量?我正在尝试:

class MyClass
    @@product_families = MyClass.load_pgrollups(File.join(File.dirname(__FILE__), ASSETS_FOLDER_NAME, PGROLLUP_CSV_FILENAME))

    def self.load_pgrollups(csv_file)                                                                                                                                        
       ....

       return product_families
    end
Run Code Online (Sandbox Code Playgroud)

我遇到一个例外:ModuleName :: myClass:Class的未定义方法`load_pgrollups'

我不一定要初始化一个类变量。我还尝试通过模块函数在模块中初始化常量

module ModuleName
    PRODUCT_FAMILIES = load_pgrollups(File.join(File.dirname(__FILE__), ASSETS_FOLDER_NAME, PGROLLUP_CSV_FILENAME))

    def load_pgrollups(csv_file)                                                                                                                                        
       ....

       return product_families
    end
Run Code Online (Sandbox Code Playgroud)

但是我为MyModule:Module得到了未定义的方法`load_pgrollups'

saw*_*awa 5

定义后调用它:

class myClass
  def self.load_pgrollups(csv_file)                                                                                                                                        
    ....
    return product_families
  end
  @@product_families = load_pgrollups(File.join(__dir__, ASSETS_FOLDER_NAME, PGROLLUP_CSV_FILENAME))
end
Run Code Online (Sandbox Code Playgroud)