在我将句子上的RUBY_VERSION
字符串拆分并将这些位转换为整数之前等等,如果当前RUBY_VERSION
大于{{},是否有更简单的方法可以检查Ruby程序1}}?
答案 0 :(得分:12)
Ruby的Gem库可以进行版本号比较:
require 'rubygems' # not needed with Ruby 1.9+
ver1 = Gem::Version.new('1.8.7') # => #<Gem::Version "1.8.7">
ver2 = Gem::Version.new('1.9.2') # => #<Gem::Version "1.9.2">
ver1 <=> ver2 # => -1
有关详细信息,请参阅http://rubydoc.info/stdlib/rubygems/1.9.2/Gem/Version。
答案 1 :(得分:1)
不是比较版本号,而是检查方法是否存在,如下所示:
text = "hello world"
find = "hello "
if String.method_defined? :delete_prefix!
# Introduced with Ruby 2.5.0, 2017-10-10, https://blog.jetbrains.com/ruby/2017/10/10-new-features-in-ruby-2-5/
text.delete_prefix!(find)
else
text.sub!(/\A#{Regexp.escape(find)}/, '')
end
p text # => "world"
答案 2 :(得分:0)
用户死了三次&#39;答案更简单,我使用的方法...除了它使用字符串比较,这不是版本号的最佳实践。最好像这样使用数值数组比较:
version = RUBY_VERSION.split('.').map { |x| x.to_i }
if (version <=> [1, 8, 7]) >= 1
...
end