如何在基于Rails版本的gem中正确处理条件流程?
由于Rails 4更改了一些内容,因此我需要根据Rails主要版本为4与3或之前的版本来有条件地进行流程控制。
我最接近的解决方案是:
if Rails.version.split(".").first.to_i < 4
# Do the Rails 4 thing
else
# Do it the old way
end
如何在基于Rails版本的gem中正确处理条件流程?
由于Rails 4更改了一些内容,因此我需要根据Rails主要版本为4与3或之前的版本来有条件地进行流程控制。
我最接近的解决方案是:
if Rails.version.split(".").first.to_i < 4
# Do the Rails 4 thing
else
# Do it the old way
end
Rails::VERSION
下定义了各种补丁级别的常量:MAJOR
,MINOR
,TINY
和PRE
(如果适用)。版本字符串由这些整数构成,您可以直接使用它们:if Rails::VERSION::MAJOR >= 4
# Do the new thing
else
# Do it the old way
end
个人认为,Rails.version =~ /^4/
读起来更好。
Rails.version.to_i >= 4
也是一种选择。 - tadman最安全简单的方法是例如使用
Gem::Version.new(Rails.version) >= Gem::Version.new('5.1')
除非您确实只需要比较主版本。
"4.0.1".to_i
是4
。如果你不关心小数点后面的内容,就不需要分割。 - tadman.gemspec
文件。你的 gem 中的所有 Ruby 代码仍然是活动代码。 - tadman