4

Rails (3.2) アプリで作業していますが、アプリの起動時にいくつかのタスクを実行する必要があります。

ロジックを別のファイルに保持したいので、次のような lib/helinium.rb も作成しました (ダミーの実行方法を使用)

class Helinium
  def self.run
    puts "running ...."
  end
end

そして、単純な初期化ファイル config/initializers/perform_checks.rb を作成しました

Helinium.run

そして、すべてがうまくいくようです。Helinium クラスをモジュール内に配置して、2 つのファイルがそれぞれ次のようになるようにします。

module Elemens
  class Helinium
      def self.run
        puts "running ...."
      end
  end
end

Elemens::Helinium.run

しかし、アプリを起動しようとすると、

初期化されていない定数要素 (NameError)

ここで何か不足していますか?モジュールが見つからないのはなぜですか?

ありがとう、良い一日を。

4

1 に答える 1

7

説明

これは、Rails でオートローディングがどのように機能するかに関係しています。

Rails は /lib 以下のすべてを自動的に要求するわけではありません。libのファイル名と一致する新しいクラス名を使用しようとした場合にのみ、自動ロードされます。

詳細については、この投稿を確認してください:
https://stackoverflow.com/a/9819938/1188913

修理

問題を解決するには、次のことができます

require 'lib/helinium'

また

クラスをというフォルダーに入れますlib\elemens

于 2013-03-15T07:28:58.200 に答える