Используя JRuby Warbler, возможно ли сгенерировать WAR, который может узнать свой RAILS_ENV из переменной окружения? - PullRequest
4 голосов
/ 18 ноября 2011

Славка хочет, чтобы вы указали RAILS_ENV при создании WAR.Затем он помещается в файл web.xml созданной WAR.

Однако, если бы вы могли создать WAR, который узнал свой RAILS_ENV из среды, вы могли бы создать одну WAR, которая могла бы использоваться для подготовки или производства - иными словами, превосходный режим управления, в котором можно протестировать WAR.и затем развернут без изменений.

1 Ответ

3 голосов
/ 19 ноября 2011

JRuby-Rack уже настроен на чтение из RAILS_ENV перед тем, как помещается в web.xml, так что эта часть золотая. Единственное, что вам нужно победить, это шаблон rails.erb, который объединяется в META-INF/init.rb внутри файла войны:

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

На данный момент не очень хороший способ сделать это, но вы можете переопределить Warbler::Jar#add_init_file следующим образом в верхней части config/warble.rb, чтобы удалить шаблон 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
...