我有一个我想部署的rails 3应用程序。我的部署环境没有安装构建工具,因此无法使用本机扩展安装依赖项。
我有一个构建主机配置了构建工具,可以构建本机扩展。
如何从构建主机部署本机扩展?
我尝试在构建主机上执行bundle package
,在远程主机上尝试bundle install --local
。它正确安装没有本机扩展的gem,但它仍尝试在生产主机上构建本机扩展。
答案 0 :(得分:0)
在生产服务器上构建是不好的做法。
当我部署Django或Rails时,我总是为操作系统包管理系统无法覆盖的任何内容构建工具链。然后我使用该工具链进行开发和部署。这可以确保每个人都使用相同版本的工具。
要创建工具链,您需要在该目录中安装软件包和支持可执行文件。您还需要确保它们可以重新定位。
例如,我目前在RedHat上使用Django。 RedHat不使用最新版本的python,而且我使用的许多python库比存储库维护者更频繁地使用它。因此,最新软件通常没有RPM。我创建了一个工具链目录,在我需要的所有库中编译了python到该目录中。然后我将其捆绑到RPM中进行部署。
答案 1 :(得分:0)
我最终得到了自定义deploy.rb。希望我能够将它作为延伸Capistrano的宝石(尽管仍然不完全满意)但是它仍然可以重新开始。