我在这里发布了我的第一个rubygem: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
本地安装宝石,那么一切正常:
$ 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)
然而,我可以使用successl 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发布运行?
BTW,我已经在/home/solyaris/.gem上配置了我的rubygems凭据 并且git push在github上运行正常。 我知道......我的git不情愿很大;-) 谢谢 乔治
答案 0 :(得分:10)
命令rake release
尝试将代码推送到远程存储库(隐式假设您正在使用git)并创建标记。
在您的情况下,看起来没有为您的存储库配置git远程并且任务失败。
我个人不喜欢这样的任务。我倾向于使用
$ rake build
构建包,然后
$ gem push pkg/...
将gem发布到RubyGems。
如果您想使用rake release
,我建议您覆盖默认实现以跳过/替换/自定义Git提交。
答案 1 :(得分:4)
rake release
将尝试在git中标记您的gem并将其推送到您的遥控器。听起来您没有配置为git push
而没有指定遥控器。
尝试此操作来修复:git push -u origin master
如果您可以在git push
之后执行rake release
而没有错误,{{1}}也可以正常工作,但如果您已将其推送到红宝石宝石,则可能需要更新宝石的版本号,我认为如果你试图发布同一版本的宝石,红宝石宝石会抱怨。