2011-11-18 12 views
5

Warbler vuole che tu specifichi un RAILS_ENV durante la creazione di WAR. Questo viene quindi inserito nel web.xml della WAR generata.Utilizzando JRuby Warbler, è possibile generare un WAR che può apprendere il suo RAILS_ENV da una variabile di ambiente?

Tuttavia, se si potesse creare un WAR che apprendesse i suoi RAILS_ENV dall'ambiente, si potrebbe creare un WAR che potrebbe essere utilizzato per la produzione o lo staging - in altre parole, un regime di gestione superiore in cui è possibile testare WAR e quindi schierato senza essere cambiato.

risposta

4

JRuby-Rack è già impostato per leggere da RAILS_ENV prima di quello che viene messo in web.xml, in modo che parte è d'oro. L'unica cosa che dovete sconfitta è questo modello rails.erb che viene fusa in un META-INF/init.rb all'interno del file di guerra:

ENV['RAILS_ENV'] = '<%= config.webxml.rails.env %>' 

Non c'è un vero e proprio buon modo per fare questo al momento, ma è possibile escludere la Warbler::Jar#add_init_file come segue nella parte superiore del tuo config/warble.rb per rimuovere il modello Rails:

class Warbler::Jar 
    alias_method :orig_add_init_file, :add_init_file 
    def add_init_file(config) 
    config.init_contents.delete("#{config.warbler_templates}/rails.erb") if config.init_contents 
    orig_add_init_file(config) 
    end 
end 
+0

Grazie! A proposito, qual è lo scopo del modello Rails (rails.erb) in META-INF/init.rb? Ci saranno effetti negativi dalla rimozione? –

Problemi correlati