使用JRuby Warbler,是否可以生成一个可以从环境变量中学习其RAILS_ENV的WAR?

时间:2011-11-18 16:14:07

标签: jruby warbler

Warbler希望您在创建WAR时指定RAILS_ENV。然后将其放入生成的WAR的web.xml中。

但是,如果您可以创建从环境中学习其RAILS_ENV的wAR,则可以创建一个可用于登台或生产的WAR - 换言之,可以测试WAR然后部署的高级管理机制没有改变。

1 个答案:

答案 0 :(得分:3)

JRuby-Rack已经设置为在放入web.xml之前从RAILS_ENV读取,因此该部分是黄金的。您唯一需要打败的是这个rails.erb模板,它会合并到war文件中的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