【问题标题】:with bundler install --deployment do i put the files in git?使用 bundler install --deployment 将文件放在 git 中吗?
【发布时间】:2013-02-04 16:09:37
【问题描述】:

所以我知道,如果我运行 bundler install --deployment ,它会将 gem 放在我的应用程序的 vendor 文件夹中,这对于我无法安装系统范围 gem 的共享主机之类的东西很有用。我的问题是,我应该把这个文件夹放到源代码控制(git)中,还是 bundler 需要在不同的系统上安装 gems,比如我们是在 mac 上开发并部署到 linux 上?

谢谢! 克雷格

【问题讨论】:

    标签: ruby git version-control gem bundler


    【解决方案1】:

    您不应该将您的捆绑程序目录放入源代码管理中。您应该使用共享服务器目录来存储捆绑数据。

    如果您使用的是 capistrano,请使用内置捆绑器 capistrano 任务:

    (在您的 config/deploy.rb 中):

    require 'bundler/capistrano'
    

    如果没有,您应该创建一个在不同版本之间持续存在的共享包目录,即:/data/project/shared/bundle

    bundle install --deployment --path /data/project/shared/bundle
    

    编辑:每个代码库/项目应该有一个捆绑目录,而不是在项目之间共享。例如,每个 capistrano 部署目录都有自己的共享区域,在版本之间共享,而不是在部署的应用程序/代码库之间共享。

    【讨论】:

    • 好吧,我不想在项目之间共享宝石。我希望它们特定于每个站点。我还能这样做吗?
    • 当然。抱歉,如果我不清楚,但这就是我的建议。编辑答案以澄清这一点。
    • 甜蜜。谢谢!我正在考虑精确地使用 capistrano 共享目录。
    • 好的,遇到了问题。我使用您提到的 require 语句部署了一个 rails 站点。它失败了,尽管正常的捆绑程序安装工作并且通过 ssh'ing 到服务器并执行捆绑程序安装 --deployment 也有效。这是错误: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension。 /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require': cannot load such file -- mkmf (LoadError)from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require'
    • 似乎无法为 gem 编译原生扩展。哪个宝石产生错误?您可能缺少构建工具或开发库。
    猜你喜欢
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    相关资源
    最近更新 更多