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

标签 jruby warbler

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

但是,如果您可以创建一个从环境中学习其 RAILS_ENV 的 WAR,您就可以创建一个可用于登台或生产的 WAR——换句话说,一个高级管理机制,可以在其中测试 WAR,然后无需更改即可部署.

最佳答案

JRuby-Rack 已经设置为在将内容放入 web.xml 之前从 RAILS_ENV 读取,所以这部分是黄金。你唯一需要打败的就是这个 rails.erb合并为 META-INF/init.rb 的模板在 war 文件中:

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

关于jruby - 使用 JRuby Warbler,是否可以生成一个可以从环境变量中学习其 RAILS_ENV 的 WAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185419/

相关文章:

ruby-on-rails - JRuby on Rails 与 Ruby on Rails,有何区别?

java - Jruby-Javafx : How to add icon to button?

ruby - 使用 JRUBY 线程化多个 JSON 请求

ruby-on-rails - 路径名中的双井号 (##) 不适用于 JRuby 'require'?

java - 我可以在同一个项目中使用 JRuby on Rails 和 Java Servlet 吗?

ruby-on-rails - 如何在 mod_ajp Apache 2 代理后面的 jRuby 上运行 Rails 3.0

ruby - jRuby,带有 C 扩展的 gem

ruby-on-rails - Tomcat 5.5 Filter 执行抛出异常,JRuby,Rails 3.2,warbler

windows - JRuby on Rails 无法与在 Windows Server 2008 上作为服务运行的 Tomcat 一起使用

Jboss,为应用程序设置环境变量