7

Rails 4.0.2 を使用しています。懸念ディレクトリにサブディレクトリ (モデル名付き) を追加しました。

  • /app/models/concerns/company/cache_concern.rb
  • /app/models/concerns/user/cache_concern.rb
  • /app/models/concerns/document/cache_concern.rb

会社のディレクトリにある cache_concern.rb には、次の内容がありました。

module Company::CacheConcern
  included do
    ...
  end
end

私のモデルクラスでは、次のことがありました。

class Company
    include Company::CacheConcern
...    
end

制作に入るまでは順調でした。次に、次の例外が発生しました。

「load_missing_constant」: 定数 Company::CacheConcern (RuntimeError) のオートロード中に循環依存関係が検出されました

私の問題を解決するために、懸念ファイルの名前空間を Company::CacheConcern から Concerns::Company::CacheConcern に変更します。これにより、本番環境でアプリケーションをロードできます。

しかし、現在、Company クラスを使用している行の懸念ファイルの開発環境に問題があります。

NoMethodError (Concerns::Company:Module の未定義のメソッド「current_company」):

そのため、彼は懸念ディレクトリを検索しているようです。本番環境ではすべて問題ありません。この問題を解決するには、懸念ファイルでクラス名の前に 2 つのコロンを追加して、モデル ディレクトリのクラスを使用します。

アプリ全体をメモリにキャッシュするため、本番モードは開発と同じように動作しないことを知っています。同様の投稿をすべてチェックしました。モデル ディレクトリのクラス名の前に、懸念ファイルで 2 つのコロンを付ける必要がありますか? 誰かがこの奇妙な状況を説明してくれたら、とてもありがたいです。

ありがとう

4

1 に答える 1

2

これは間違っていると思います: 問題を解決するには、懸念ファイルの名前空間を Company::CacheConcern から Concerns::Company::CacheConcern に変更します。これにより、本番環境でアプリケーションをロードできます。

代わりにこれを行う

Companies::CacheConcern フォルダの名前を companies/cache_concern.rb に変更します

于 2014-10-24T08:10:11.817 に答える