【问题标题】:rake release fail (using gem bundler)rake 发布失败(使用 gem bundler)
【发布时间】:2013-12-29 10:11:02
【问题描述】:

我在这里发布了我的第一个 ruby​​gem:https://rubygems.org/gems/blomming_api (此处源代码:https://github.com/solyaris/blomming_api

我使用了 bundler,它使用bundle gem 命令创建了三个 rake 任务:

$ rake -T
rake build    # Build blomming_api-0.3.7.gem into the pkg directory
rake install  # Build and install blomming_api-0.3.7.gem into system gems
rake release  # Create tag v0.3.7 and build and push blomming_api-0.3.7.gem to Rubygems

如果使用 rake install 在本地安装 gem,一切都很好:

$ rake install
blomming_api 0.3.7 built to pkg/blomming_api-0.3.7.gem.
blomming_api (0.3.7) installed.

当我尝试发布时出现问题:

$ rake release
blomming_api 0.3.7 built to pkg/blomming_api-0.3.7.gem.
Tagged v0.3.7.
Untagging v0.3.7 due to error.
rake aborted!
Couldn't git push. `git push  2>&1' failed with the following output:

fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using

    git remote add <name> <url>

and then push using the remote name

    git push <name>


/home/solyaris/.rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:104:in `perform_git_push'
/home/solyaris/.rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:96:in `git_push'
/home/solyaris/.rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:77:in `block in release_gem'
/home/solyaris/.rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:129:in `tag_version'
/home/solyaris/.rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:77:in `release_gem'
/home/solyaris/.rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:50:in `block in install'
Tasks: TOP => release
(See full trace by running task with --trace)

尽管如此,我还是可以通过 gem push 命令成功发布 gem:

$ gem push pkg/blomming_api-0.3.7.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: blomming_api (0.3.7)

我认为问题出在 git push 远程配置上... 有什么想法可以帮助我配置 git 以让 rake 发布运行?

顺便说一句,我已经在 /home/solyaris/.gem 上配置了我的 ruby​​gems 凭据 和 git push 在 github 上运行正常。 我知道......我的 git 不情愿是很大的 ;-) 谢谢 乔治

【问题讨论】:

    标签: ruby git rubygems gem bundler


    【解决方案1】:

    命令rake release 尝试将代码推送到远程存储库(隐式假设您使用的是 git)并创建标签。

    在您的情况下,您的存储库似乎没有配置 git remote 并且任务失败。

    我个人不喜欢这样的任务。我倾向于使用

    $ rake build
    

    构建包,然后

    $ gem push pkg/...
    

    将 gem 发布到 RubyGems。

    如果你想使用rake release,我建议你覆盖默认实现以跳过/替换/自定义 Git 提交。

    【讨论】:

    • 谢谢西蒙娜。我也用 gem push me。这个问题可以重新问:如何设置 git 远程指向 ruby​​gems 存储库?
    • RubyGems 没有 git 存储库。您不能将 repo 指向 RubyGems。该任务假设您在 git 存储库中对库进行版本控制,例如在 GitHub 或其他地方。
    • rake release 非常棒,它可以自动执行你应该做的事情——在 git 中为每个版本创建标签。
    【解决方案2】:

    rake release 将尝试在 git 中标记您的 gem 并将其推送到您的遥控器。听起来您没有配置为在不指定遥控器的情况下执行git push

    试试这个修复:git push -u origin master

    如果您之后可以在没有错误的情况下执行git push,那么rake release 应该也可以,但如果您已经将它推送到 ruby​​ gems,您可能需要提高 gem 的版本号,我认为如果您尝试发布相同版本的 gem,ruby gems 会报错。

    【讨论】:

    • 仅供参考 - 我看到的错误输出消息建议运行 git push --set-upstream origin master,它也可以正常工作(我相信这两个命令是等效的)。
    猜你喜欢
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2014-07-12
    • 2016-10-21
    • 2011-06-21
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    相关资源
    最近更新 更多