2010-02-23 52 views
0

我在SERVERFAULT上发布了同样的东西,但没有回复。所以在这里:(Rails,Warbler)在Glassfish中部署和初始化Rails应用程序...?

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

这就是说,我的设置在我的开发机器上工作得非常好。不过,我很好奇如何进行自动化环境初始化。换句话说,我需要弄清楚如何确保所有数据库,文件等。在部署时进行配置。 到目前为止,我所见过的所有示例都假设您正在要部署的系统上运行IDE,并且您需要在部署之前手动运行您的rake任务。不过,我只需要给最终用户提供“.war”,并且能够在应用程序部署/启动时运行所有的rake任务。

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

最好。

回答

0

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

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

你不能让初始化器在数据库中创建模式,但你可以让他们检查默认的种子数据,如果它不存在,就把它放入。

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

+0

基本上我需要设置一些目录和数据库,就是这样。我宁愿不处理另一个安装(因为这将分发,我将负责支持另一个项目),所以我想避免德比。是否有可能让初始化程序负责设置数据库,而不会在应用程序启动时抱怨?出于好奇,由于使用Glassfish,目录编写和文件创建被禁止... – 2010-02-24 15:30:44

+0

...我问,因为我有一个授权计划,我需要将文件复制到与应用程序相同的目录。如果可能的话,我想使用Glassfish界面来复制文件,但是如果我不能,那么我会在应用程序中添加一个网页。无论哪种方式,我需要知道Glassfish将不会以我的方式。这有任何意义吗? – 2010-02-24 15:31:43

+0

我增强我的回答有点根据您的意见 – danivovich 2010-02-24 16:02:29