【问题标题】:(Rails, Warbler) Deploying and initializing Rails applications in Glassfish…?(Rails,Warbler)在 Glassfish 中部署和初始化 Rails 应用程序……?
【发布时间】:2011-01-20 07:41:20
【问题描述】:

我在 SERVERFAULT 上发布了同样的项目,但没有得到回复。所以这里是:

我目前正在完成一个 Rails 应用程序。我正在使用 Warbler 将其打包为“.war”文件并使用 GlassFish 进行部署。我这样做是因为该应用程序将分发给公司以供内部使用。可以说我可以/应该使用另一个框架来开发这种性质的应用程序,但是,我选择了开发的轻松/速度而不是部署麻烦。

也就是说,我的设置在我的开发机器上运行良好。但是,我很好奇如何进行环境初始化自动化。换句话说,我需要弄清楚如何确保所有的数据库、文件等都可以正常运行。在部署时配置。 到目前为止,我所看到的所有示例都假设您在要部署的系统上运行 IDE,并且他们让您在部署之前手动运行您的 rake 任务。但是,我需要简单地为最终用户提供“.war”,并能够在应用程序部署/启动时运行所有 rake 任务。

有人可以为我指出正确的方向吗? FWIW Glassfish 手册中没有关于环境初始化等内容的内容。再说一次,我不认为我应该期望它们涵盖部署的每个方面。

最好的。

【问题讨论】:

    标签: ruby-on-rails glassfish production-environment warbler


    【解决方案1】:

    根据您的数据库要求,您可以在 Glassfish 环境中嵌入 Derby。您可以轻松地创建一个空白/默认数据库,然后将该干净版本放入您必须设置的每个 Glassfish 环境中。

    我不确定您还需要配置和初始化什么,但我想说,如果可以的话,编写脚本,或者使用一些 rake 任务。嵌入 Derby 负责数据库启动和初始化。请记住,war 文件只是一个 zip 文件,因此通过脚本添加配置文件应该不会那么难。您可以使用 rails 初始化程序 (/config/initializers/) 来加载 yml 文件以进行配置或应用启动时需要执行的任何操作。

    您将无法让初始化程序在数据库中创建架构,但您可以让他们检查默认种子数据,如果不存在则将其放入。

    您应该能够访问 Glassfish 和 JVM 可以访问的文件系统的任何部分。我对 Glassfish 了解不多,但我在 Tomcat 上使用 jruby rails 应用程序时遇到的唯一问题与相对路径有关,即相对于调用启动脚本的位置,而不总是相对于安装根目录。这可能可以通过 Tomcat 中正确的启动脚本或设置适当的启动文件夹来解决,我只是不需要深入研究。

    【讨论】:

    • 基本上我需要设置一些目录和数据库,仅此而已。我宁愿不处理另一个安装(因为这将被分发并且我将负责支持另一个项目),所以我想避免 Derby。是否可以让初始化程序负责设置数据库,而应用程序在启动时不会抱怨?出于好奇,由于使用 Glassfish,是否以任何方式禁止了目录写入和文件创建?...
    • ...我问是因为我有一个许可方案,我需要将文件复制到与应用程序相同的目录中。如果可能的话,我想使用 Glassfish 界面来复制文件,但是如果我不能,那么我会在应用程序中添加一个网页来执行此操作。无论哪种方式,我都需要知道 Glassfish 不会妨碍我。这有意义吗?
    • 我根据您的 cmets 对我的答案进行了一些扩充
    • 所以您是说没有直接的机制可以通过迁移等方式初始化(​​并随着每个版本逐步更新)数据库?这是否意味着我们需要为每个版本显式创建 SQL 脚本?
    • 您可以使用迁移更新数据库,但您可能无法在从 war 文件初始化应用程序的过程中执行此操作。作为新版本的一部分,发送更新 SQL 以在数据库上运行是完全合理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2011-09-20
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多