【问题标题】:Bundler config to either look for gems in custom path or download from custom sourceBundler 配置以在自定义路径中查找 gem 或从自定义源下载
【发布时间】:2021-08-25 10:50:23
【问题描述】:

如何配置捆绑程序,以便在我运行 bundle install 时它首先在 /my/custom/path 下查找 gem,如果找不到,则尝试从托管在 https://a.nice.host 下的 ruby​​ gem 远程存储库中获取它们将这些下载到./local/relative/path(例如,相对于cwd)。我想避免捆绑器查看默认的 gem 安装系统路径或 ruby​​gems.org

【问题讨论】:

    标签: ruby path rubygems bundler


    【解决方案1】:

    从本地文件夹获取 gem 的语法是:

    gem 'some-gem-name', path: '/my/custom/path'
    

    而指定自定义源的语法是:

    gem 'another-gem-name', source: 'https://a.nice.host'
    

    要将 gems 安装到特定的本地文件夹中,您可以运行:

    bundle install --path ./local/relative/path
    

    现在,这可能就是您需要的所有工具,事实上...(事实上,特别是对于最后一个要求,您可能希望查看rvm gemsets,或使用@ 987654326@.)

    但您也确实询问过“首先查看本地文件夹,如果不存在则仅返回到远程源”。这是一个非常奇怪的要求(通常您只想明确选择加入以从本地路径获取宝石?!),但要按照您的要求回答这个问题...

    Gemfile 实际上就是 ruby​​ 代码!所以你可以定义这个逻辑使用......你猜对了,红宝石!例如:

    if File.exists?('/my/custom/path')
      gem 'some-gem-name', path: '/my/custom/path'
    else
      gem 'some-gem-name', source: 'https://a.nice.host'
    end
    

    如果这个(不寻常的)模式需要在多个地方重复,你可以将它包装到一些辅助方法中。

    更多bundler的配置选项请见the documentation

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 2023-03-31
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      相关资源
      最近更新 更多