- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
3.1-6ren">
gemspec 语义版本控制运算符 ~>(又名 twiddle-wakka ,又名 pessimistic 运算符)允许限制 gem 版本但允许进行一些升级。
我经常看到它可以读作:
"~> 3.1" => "Any version 3.x, but at least 3.1"
"~> 3.1.1" => "Any version 3.1.x, but at least 3.1.1"
但是有了一个数字,这条规则就失效了:
"~> 3" => "Any version x, but at least 3" *NOT TRUE!*
"~> 3" => "Any version 3.x" *True. But why?*
如果我想要“任何版本 3.x”,我可以只使用“~> 3.0”,这是一致的。就目前而言,这种对一个号码的操作更改是不一致的,也没有记录在案。
此外,如果我想说“高于或等于 3 的任何版本”(例如 3.x、4.x 等...),我很想使用“>=”运算符,我们被告知is evil .
这种行为有原因吗?
编辑:
我把这个交给大卫,因为他在 rubygems 中找到了罪魁祸首文件。有一个“功能”可以默默地将“3”扩展为“3.0”(Line 148 in version.rb:“单位数字版本会自动扩展为零以提供合理的结果。”)
我必须说我不同意结果是合理的,因为它打破了预期的顺序,并且阻止了能够与该运算符(operator)说“任何版本 x,但至少 3”。因此,我们被迫进入 >= which guides.rubygems.org warns us not to use .反正。也许这篇文章将作为我一直在寻找的文档...
最佳答案
通过查看 rubygems 源代码(尤其是 requirement.rb、version.rb),悲观运算符至少需要两个版本控制段。
这也确实有道理。作为~> v.r
只是不等式的语法糖
v.r <= current_version.current_release < (v+1).0
如果只有一个版本号,上限是多少?是的,∞(无穷大),所以没有必要让它起作用。您可以简单地将其写为 >= v
.
关于ruby - 为什么 Gemfile 语义版本控制运算符 (~>) 会产生与一个数字不一致的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121960/
在 Gemfile 中指定第三方库的确切版本与使用 Gemfile.lock 之间有什么区别吗? 如果我在 Gemfile 中使用确切的版本,它是否与分发 Gemfile.lock 相同? 最佳答案
我想编写一个单元测试来检查我项目中的 Gemfile.lock 是否与 Gemfile 匹配,以防我忘记在提交前调用 bundle。 bundle 命令(或其他方法)是否有一个选项来检查这个? 注意
没有文件扩展名,我无法让语法高亮保持不变。这不是世界末日,但我很高兴拥有它。 如果我重命名 Gemfile 会破坏 Rails如 Gemfile.rb ? 最佳答案 看起来您可以重命名它,但是 bun
如何根据 Gemfile 的更改重新同步 Gemfile.lock。 假设 Gemfile 中有 3 个 gem(gem1、gem2、gem3)。 bundle install 创建一个 Gemfil
我想将我的 Gemfile 设置为使用来自有效 Gemfile.lock 的所有确切版本。 最简单的方法是什么? 我不想手动完成。 bundler 是否开箱即用。如果没有,是否有 gem? 澄清一下,
jekyll build 正在我的 _site 目录中创建一个 Gemfile 和 Gemfile.lock。 两个问题: 我应该担心在生产中包含这些文件吗? 如果是,我怎样才能防止生成它们? 接受任
从 Gemfile 生成 Gemfile.lock 后,是否有任何工具可以返回卡住 Gemfile 中的版本。我宁愿避免手动进行。 背景:在 gem 上卡住次要版本是一种很好的做法,例如如果 Gemf
我正在尝试将我的应用程序部署到 Heroku。我删除了 'sqlite3' gem 并将以下部分添加到我的 Gemfile 中: gem 'sqlite3', group: :development
我是 Ruby on Rails 的初学者,我使用的是 Rails 3.0.9。 Rails 中 Gemfile 和 Gemfile.lock 有什么区别? 最佳答案 Gemfile 是您指定要使用哪
是否存在类似 Ruby 的 Bundler的 Gemfile和 bundle install , bundle exec Haskell Cabal 的命令? 这是一个related question
我们会对此进行测试,但如果这不应该发生,我们不想冒险破坏我们的开发环境。 删除Gemfile.lock可以吗? 我们在 Rails 3.0.6 上。 最佳答案 您可能不会破坏您的开发环境。但是,您最终
为什么要创建指定 2.6.3 的 Gemfile?我如何让它创建一个指定 2.7.0 的 Gemfile ??? 谢谢 最佳答案 只需更改:ruby '2.6.3'至 ruby '2.7.0'在您的
Gemfile source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git"
我是 Rails 新手,正在尝试关注 http://railstutorial.org指导。我正在使用: gem 2.0.3 bundler 1.3.5 rails 3.2.13 ruby 2.0.0
我有一个带有 Debian Wheezy 的测试虚拟机,但没有安装 ruby。 Gitlab 6.9.2 已使用提供的安装程序安装,该安装程序带有嵌入式 ruby。现在,我想将一些旧的存储库导
我正在 Windows 机器和 Linux 机器之间开发 Ruby on Rails 应用程序。不理想,但 Windows 上的 Ruby 已经改进了很多。不管怎样,我读到你可以实现一个 IF 语句,
我的博客基于 Jekyll Bootstrap,我最近设置了一台装有 Windows 10 的新机器。 当我在本地机器上启动我的服务器进行测试时,它说我应该向我的 Gemfile 添加一些东西: $
有一个共同的模式: 有许多开发人员在一个项目上工作,并且 Gemfile(.lock) 通过 SCM 共享。但是,如果一些开发人员想要使用不同的工具进行测试和开发怎么办?怎么做? 问题是,当您将条件部
我是 Ruby 的新手。 我正在关注一篇博文,其中说为了安装所需的依赖项,我需要创建一个 Gemfile。 如何创建一个以 rspec 作为依赖项的 Gemfile? 最佳答案 bundle init
我当然不是 Ruby 开发人员,但我的服务器上有一个使用 Ruby、Gems 和 Bundler 的应用程序。我正在尝试在不同的用户帐户下但在同一 VPS 上安装另一个 Ruby。当我去运行的时候 b
我是一名优秀的程序员,十分优秀!