7

Ich verwende Rails 4.0.2. Ich fügte hinzu, Unterverzeichnisse (mit Modellnamen) in Concern Verzeichnis:Ausnahme: "load_missing_constant Kreisabhängigkeit erkannt während Autoloading-Konstante" in Rails

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

cache_concern.rb in Unternehmen folgenden Inhalt hatte:

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

In meiner Klasse hatte ich:

class Company 
    include Company::CacheConcern 
...  
end 

Alles war in Ordnung, bis ich in die Produktion ging. Dann habe ich folgende Ausnahme:

`load_missing_constant ': Kreisabhängigkeit erfasst wird, während konstant Firma selbstladende :: CacheConcern (Runtime)

Zu meinem Problem löse ich ändern Namespace in meiner Sorge Dateien von Unternehmen :: CacheConcern zu Bedenken :: Firma :: CacheConcern. Dies ermöglicht mir das Laden von Anwendungen in Produktionsumgebungen.

Aber jetzt habe ich Problem in Entwicklungsumgebung in Sorge Datei in Zeile, wo ich Firmen Klasse bin mit:

NoMethodError (nicht definierte Methode `current_company‘ für Bedenken :: Unternehmen: Module):

So sieht es aus wie er in Concern-Verzeichnis sucht. In der Produktion ist alles in Ordnung. Um dieses Problem zu beheben, könnte ich zwei Dateien vor dem Klassennamen hinzufügen, um die Klasse aus dem Verzeichnis models zu verwenden.

Ich weiß, dass der Produktionsmodus sich nicht so verhält wie die Entwicklung, weil die ganze App im Speicher zwischengespeichert wird. Ich habe alle ähnlichen Beiträge überprüft. Muss ich Klassennamen aus dem Modellverzeichnis mit zwei Doppelpunkten in den zugehörigen Dateien vorauseilen? Ich wäre sehr dankbar, wenn mir jemand diese seltsame Situation erklären könnte.

Dank

Antwort

2

Sie dies tat ich denke, dass es falsch ist: Um mein Problem, das ich ändern Namespace in meiner Sorge Dateien von Firma :: CacheConcern zu Bedenken :: Unternehmen :: CacheConcern zu lösen. Dies ermöglicht mir das Laden von Anwendungen in Produktionsumgebungen.

Stattdessen tun, um diese

Firmen :: CacheConcern und benennen Sie die Ordner als Unternehmen/cache_concern.rb