Domanda

Ho un JRuby / applicazione Rails utilizzando:

jruby 1.4.0
Rails 2.3.5
ActiveMQ 5.3.0
Mule ESB 2.2.1

Attualmente nel nostro file environment.rb iniziamo a Mule nel inizializzatore. Questo diventa un grande dolore quando andiamo a fare i compiti rake normali che non richiedono JMS / Mulo come db:. Migrate come ci vuole molto tempo per avvio / arresto Mule ogni

Il codice è simile a questo:

APP_CONTEXT = Java::our.company.package.service_clients.Initializer.getAppContext(MULE_CONFIG_PATH)

E usiamo APP_CONTEXT per andare a prendere il fagiolo per la connessione al servizio appropriato.

Sto cercando di capire alcune meccanismo mediante il quale APP_CONTEXT potrebbe essere pigramente istanziato (non in inizializzazione) per evitare tutti i dolori di dover avvio Mulo su inizializzazione.

Al momento abbiamo alcune classi client rubino che vengono istanziati come before_filter in application_controller come @data_service = DataService.new(APP_CONTEXT) che inizializzare il client java corretta per ogni richiesta per l'uso nei nostri controllori.

Sono aperto a tutti i suggerimenti. Sto avendo un momento difficile cercando di trovare il posto giusto per mettere questo esemplificazione pigro.

È stato utile?

Soluzione

Alla fine, (e io non so perché non ho pensato di questo) ho appena fatto un App classe che ha un metodo di una classe di ritorno

@context ||= Java::our.company.package.service_clients.Initializer.getAppContext(MULE_CONFIG_PATH)

Non sono sicuro di quello che mi passava per la testa, ma ho pensato che forse se questo è stato riferito da due funzioni allo stesso tempo, mi piacerebbe avere due differenti istanze del AppContext, dimenticando che in Ruby una classe davvero è solo un oggetto Singleton, quindi questo sarà sempre tornare quello di contesto.

class App

  def self.context
    @context ||= Java::our.company.package.service_clients.Initializer.getAppContext(MULE_CONFIG_PATH)
  end
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top