【问题标题】:Starting Ruby Gem versioning within a Rails application在 Rails 应用程序中启动 Ruby Gem 版本控制
【发布时间】:2013-05-28 13:13:09
【问题描述】:

我有一个 Rails 应用程序,它指向 github 上的 gem(尚未推送到 Ruby Gems),它还没有版本化,所以当我运行 bundle 时,它​​看起来像这样:

 gem (0.0.0) from git@github.com:company/gem.git (at master)

我一直在对 gem 进行更改,并希望开始对其进行版本控制,因此当我推送到 master 时,它不会破坏依赖于先前 gem 的 Rails 应用程序中的功能。我不够老练,无法使 gem 向后兼容,所以我认为版本控制是处理这个问题的最佳方法。

我正在寻找有关如何开始对该 gem 进行版本控制的建议,是否只是将 gemspec 更改为 0.0.1,然后将我的 Rails 应用程序中的 gemfile 更改为指向该版本?

【问题讨论】:

  • 这个 gem 是只由 github 托管,还是放在一个集中的 repo 下(例如 ruby​​gems.org)?

标签: ruby-on-rails ruby rubygems gemspecs


【解决方案1】:

根据semantic versioning,您应该从0.1.0 开始,并为不向后兼容的任何更新增加主要版本,如果只引入新功能但向后兼容,则增加次要版本,如果是小版本,如果这是一个错误修复或类似的。

也就是说,如果您仅通过 GitHub 托管,您只需将 gemspec 版本更改为您的偏好,并为该提交添加一个标签。添加标签可以在您转移到其他版本后轻松在 GitHub 中找到正确的版本 - 例如,如果使用 Bundler,您的 Gemfile 条目将如下所示:

gem 'your-gem', git: 'git://github.com/your-repo/your-gem.git', tag: 'v0.1.0'

您也可以使用以下(冗长的)命令集来执行此操作,而无需捆绑程序:

git clone git://github.com/your-repo/your-gem.git
cd your-gem
git checkout v0.1.0
gem build your-gem.gemspec
gem install your-gem-0.1.0.gem

如果您打算通过http://rubygems.org 进行托管,您需要自己创建一个帐户,然后将您的新版本推送到那里。 Rubygems 将从 gemspec 中检测版本并使用更标准的 Gemfile 条目格式提供它:

gem 'your-gem', '=0.1.0'

或者使用gem 命令:

gem install your-gem -v '=0.1.0'

【讨论】:

  • 不客气。顺便说一句,我建议查看 this railscast,它演示了如何使用 bundler 来简化构建和发布 gem 的过程。
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
相关资源
最近更新 更多