1

我有一个 jruby rails 应用程序,我刚刚开始使用 bundler 进行 gem 依赖管理。我有兴趣听取人们对部署策略的意见。文档说这bundle package会在本地打包你的 gem,这样你就不必在服务器上获取它们(我相信 warbler 默认会这样做),但我个人认为(对我们来说)这不是我们部署的方式代码(在我们的例子中是一个 WAR 文件)变得更大。

我的偏好是模仿我们的 MVN 设置,该设置在将代码复制到服务器后直接在服务器上获取所有依赖项。以下是我的想法,感谢所有评论:

Step1:构建war文件,复制到服务器
Step2:在服务器上解压war,使用mvn获取java依赖Step3:使用Bundler获取Gem deps(这些应该放在哪里??)
* Step 3是我有点不清楚的步骤在。我是否bundle install有特定的目标?
第四步:重启Tomcat

我在这里的理由是,我想在部署时将依赖项与代码分开。我还想将所有 gem 依赖项放在应用程序本身中,以便包含它们,而不是将它们安装在应用程序用户的主目录中(同样,我相信这是 Bundler 的默认设置)

4

1 回答 1

0

只需查看 Warbler 的默认结构,它将 gems 复制到Rails.root/gems.,所以我决定遵循该约定。

*注意:我没有看到任何地方将此路径定义为 Rails 的加载路径,但它显然有效。这是我的最终解决方案:

Step1: Build war file, copy to server
Step2: Unpack war on server, fetch java dependencies with mvn 
Step3: use Bundler to fetch Gem deps: `bundle install gems --without test --disable-shared-gems`
Step4: Restart Tomcat

另请注意,它bundle install gems看起来像一个特定的命令,即。“安装这些 gems” 但gems实际上是指 Rails.root 中的目录 gems。此目录由 bundler 创建,因此在部署时不需要存在。

希望对寻找类似解决方案的其他人有所帮助!

于 2010-05-27T13:59:02.630 回答