【问题标题】:Bundler's rake release with geminabox?Bundler 的 rake 发布与 geminabox?
【发布时间】:2013-01-26 14:17:11
【问题描述】:

有没有办法配置捆绑器,这样当我执行 rake release 时,它会将 gem 提交到我自己的 gem 服务器(gem in a box 实例)而不是 ruby​​gems?

理想情况下,我可以从我的 git 存储库中省略此配置。

【问题讨论】:

    标签: ruby rake bundler


    【解决方案1】:

    我设法更改了将 gem 上传到 ruby​​gems 的任务,这比 JohnIV 提供的解决方案更具侵入性,尽管概念是相同的。

    Rake::Task['release:rubygem_push'].clear
    namespace :release do
        task :rubygem_push do
          version = ModuleName::VERSION
          name = 'module_name'
          cmd = "gem nexus pkg/#{name}-#{version}.gem"
          puts `#{cmd} 2>&1`
        end
    end
    

    【讨论】:

      【解决方案2】:

      'bundler_geminabox' 添加到您的 Gemfile:

      group :development do
        gem 'bundler_geminabox'
      end
      

      然后,在您的 rakefile 中,不需要 'bundler/gem_tasks'

      require 'bundler_geminabox/gem_tasks'
      

      您不需要向 rakefile 添加任何任务;您将自动获得rake buildrake installrake release,其中最后一个上传到~/.gem/geminabox 中列出的服务器。否则,行为与bundler/gem_tasks 提供的等效任务相同。

      Github 上的宝石:https://github.com/joshkrueger/bundler_geminabox

      【讨论】:

      • 一个例子真的可以保存这个答案。
      【解决方案3】:

      我为此制作了一个无依赖的 gem,它模仿 geminabox http post 请求并用 rake release:inabox 覆盖 bundlers rake release

      https://github.com/dfherr/geminabox-release

      【讨论】:

        【解决方案4】:

        Rubygems 实际上是硬编码到 bundler 中的,我发现只有一种解决方法。

        以下的猴子补丁应该可以满足您的需求:

        module Bundler
          class GemHelper
            protected
            def rubygem_push(path)
              if Pathname.new("~/.gem/nexus").expand_path.exist?
                sh("gem nexus '#{path}'")
                Bundler.ui.confirm "Pushed #{name} #{version} to https://<your-url-here>/."
              else
                raise "Your Nexus credentials aren't set. Run `gem nexus #{path}` to push your gem and set credentials."
              end
            end
          end
        end
        

        以上是针对 Nexus 而不是 Geminabox,但这个概念应该适用于任何一个。

        至于从 git 中省略它,恐怕我们不走运。但是,您可以在项目之间适当地共享它,因此只需将其签入一个位置而不是多个位置。希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-03-03
          • 2014-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多