【问题标题】:Passing RAILS_ENV into Torquebox without using a Deployment Descriptor在不使用部署描述符的情况下将 RAILS_ENV 传递到 Torquebox
【发布时间】:2013-09-17 13:09:48
【问题描述】:

我想知道是否有一种方法可以将 RAILS_ENV 的值直接传递到 Torquebox 服务器,而无需通过部署描述符;类似于我如何使用 -D 选项将属性传递给 Java。

在过去的几周里,我一直在努力解决 Torquebox 的各种部署问题。我认为问题的很大一部分与将 gem 打包到 Knob 文件有关,这是在 Window 环境中管理它们的最实用的方法。我尝试过归档部署和扩展部署;有和没有外部部署描述符。

  • 使用外部部署描述符,我发现打包的 Gem 依赖项未正确部署,并且收到有关缺少依赖项的错误。

  • 扩展时,我不得不对依赖项和 Knob 中包含的内容进行大量修改,但最终我得到了部署。但是,扩展 Knob 中的某些文件被标记为失败(可能存在重复依赖项?),但它们并不影响整体部署。问题是当服务器重新启动时,第二次部署会失败,因为它无法重新部署之前失败的文件之一。

我发现唯一能始终如一地为我工作的是没有外部部署描述符的存档。但是,我仍然需要一种方法来告诉应用程序它在哪个环境中运行。我对每个环境都有不同的 Torquebox 实例,它们只运行一个应用程序,因此在服务器级别配置它是相当合理的。

在此问题上的任何帮助将不胜感激。非常感谢!

【问题讨论】:

    标签: deployment jruby torquebox


    【解决方案1】:

    我最终想到的解决方案是将 RAILS_ENV 作为 Java 属性传递给 Torquebox 服务器,然后在 Rails boot.rb 中将 ENV['RAILS_ENV'] 设置为该值em> 初始化器。

    第 1 步:设置 Java 属性

    首先,您需要为 Torquebox 服务器设置 Rails Environment java 属性。为了与标准 Java 约定保持一致,我将其命名为 rails.env

    取决于您的平台和配置,需要在以下脚本之一中进行此更改:

    • 使用 JBoss Windows 服务包装器: service.bat
    • 独立环境:standalone.conf.bat (Windows) 或standalone.conf (Unix)
    • 域环境::domain.conf.bat (Windows) 或 domain.conf (Unix)

    将以下行添加到上面的相应文件中以设置此 Java 属性:

    set JAVA_OPTS=%JAVA_OPTS% -Drails.env=staging
    

    -D 选项用于设置 Java 系统属性。

    第二步:根据 Java 属性设置 ENV['RAILS_ENV']

    我们希望尽早设置 RAILS_ENV,因为很多 Rails 初始化逻辑都使用它。我们将应用程序逻辑注入 Rails 初始化过程的第一个机会是 boot.rb

    见:http://guides.rubyonrails.org/initialization.html#config-boot-rb

    以下行应添加到 boot.rb 的顶部:

    # boot.rb (top of the file)
    ENV['RAILS_ENV'] = ENV_JAVA['rails.env'] if defined?(ENV_JAVA) && ENV_JAVA['rails.env']
    

    这必须是文件中的第一件事,这样 Bundler 才能对环境做出明智的决策。

    正如您在上面看到的,JRuby 的一个很少提及的特性是它通过ENV_JAVA 全局映射(镜像ENV ruby​​ 映射)方便地公开所有Java 系统属性,因此我们可以使用它来访问我们的Java系统属性。

    我们检查 ENV_JAVA 是否已定义(即使用 JRuby),因为我们支持多种部署环境。

    我强制使用 rails.env 属性,因为此时 *RAILS_ENV* 似乎已经有了默认值。

    【讨论】:

    • 很棒的帖子。感谢您的详细指南。
    猜你喜欢
    • 1970-01-01
    • 2014-09-26
    • 2011-04-19
    • 2011-06-26
    • 2014-11-07
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多