9

私は、それぞれが独自のファイルで定義された 4 つの関連クラスを持ついくつかのレガシー RoR コードを使用しています。これらのクラスはすべてパーサー クラスであり、app/models/parsers に存在します。各ファイル名は _parser.rb で終わります。

ファイル adf_parser.rb のクラス定義行の例を次に示します。

class Parsers::AdfParser

Parsers:: の一部が何をしているのかわかりません。

  • 私が見つけることができるどこにも定義されたパーサーと呼ばれる明示的なモジュールはありません。
  • モジュール仕様をクラス名に追加するだけで暗黙的にモジュールを作成することに関するドキュメントはありません。
  • 唯一の外部依存関係は「require 'csv'」です。
  • class def 内に include ステートメントがありますが、クラス名を説明するものは何もないと思います。
  • 新しい RoR テスト プロジェクトを作成し、これらのファイルのスタブを並列ディレクトリに配置しましたが、名前エラーのためにコマンド ラインから実行できません。
  • このように名前が付けられたクラスのオンラインの例はありません。

これはロケット手術ではないと確信していますが、これを理解しようとして朝のほとんどを失ってしまいました。誰かが何が起こっているのか教えていただければ幸いです.

更新: サブディレクトリ名に基づいて、これはちょっとした Rails マジックのように思えます。テスト アプリでエラーが発生した理由は、何らかの方法で Rails でファイルを呼び出すのではなく、Ruby インタープリターを介してファイルを実行したためだと思います。

4

2 に答える 2

8

class Parsers::AdfParser実際には次と同等です。

module Parsers
  class AdfParser

これが適切に機能し、自動ロードされるファイルの場所は、app/models または lib の下の parsers/adf_parser.rb である必要があります。基本的に、ファイル パスはクラス階層を模倣する必要があります。

于 2013-03-19T17:33:10.227 に答える
3

モジュールのparsersサブディレクトリにあります。慣例により、Rails の名前空間が表示されます。

于 2013-03-19T17:39:17.740 に答える