5

Ich möchte eine globale Funktion für alle Aspekte meines Ruby on Rails-Projekts (Modelle, Ansichten und Controller) verfügbar machen. Am Anfang dachte ich, dass ich nur noch hinzufügen:Rails - Universal Globale Funktion

def self.my_function 
    # Code here... 
end 

/config/application.rb und dann rufen Sie einfach:

Application::my_function 

überall in meiner Anwendung. Aber das hat nicht funktioniert. Also habe ich einige googeln und es scheint, dass ich globale Funktionen aussetzen kann:

  • Für meine Controller in /app/controllers/application_controller.rb
  • Für meine Ansichten in /app/helpers/application_helper.rb
  • Für meine Modelle in/lib/

Aber nicht für alle von ihnen auf einmal.

Kann jemand mir sagen, wenn was ich will, ist möglich?

Ich würde auch gerne alle Include-Anweisungen so weit wie möglich vermeiden, da dies im Idealfall von überall zugänglich sein soll. Aber an dieser Stelle wäre sogar die Verwendung von Include-Anweisungen in Ordnung, wenn ich die Logik für diese Funktion an einer zentralen Stelle definieren könnte.

Antwort

10

definieren es in config/environment.rb, bevor die App mit initialisiert wird:

<YourApp>::Application.initialize! 
+0

Dank! Das war die Lösung! Gerade und einfach! – BlazeCell