Ruby on rails 测试用于gem创作的Rails版本的正确方法

Ruby on rails 测试用于gem创作的Rails版本的正确方法,ruby-on-rails,gem,Ruby On Rails,Gem,在基于Rails版本的gem中,管理条件流的正确方法是什么 Rails4改变了一些东西,所以我需要在Rails主要版本为4 vs.3或更早版本的基础上有条件地流动 最接近我的是: if Rails.version.split(".").first.to_i < 4 # Do the Rails 4 thing else # Do it the old way end if Rails.version.split(“.”).first.to_i=4也是一种选择。

在基于Rails版本的gem中,管理条件流的正确方法是什么

Rails4改变了一些东西,所以我需要在Rails主要版本为4 vs.3或更早版本的基础上有条件地流动

最接近我的是:

if Rails.version.split(".").first.to_i < 4
    # Do the Rails 4 thing
else 
    # Do it the old way
end
if Rails.version.split(“.”).first.to_i<4
#做4件事
其他的
#老办法
结束

我个人认为
Rails.version=~/^4/
读起来更好。

Rails在
Rails::version
下为不同的补丁级别定义常量:
MAJOR
MINOR
TINY
PRE
(如果适用)。版本字符串为,您可以直接使用它们:

if Rails::VERSION::MAJOR >= 4
  # Do the new thing
else
  # Do it the old way
end

这些可以追溯到gem的允许依赖项规范中,因此它们应该可以安全地使用。

您没有在gem文件中指定Rails版本吗?我正在编写一个gem,它需要支持从版本2.x到4.x的Rails。不幸的是,Rails 4改变了一个核心的ActiveSupport组件(事实上是它自己的一个gem),所以我需要改变Rails 4的gem的行为(它在版本2.x-3.x中仍然可以正常工作)。我不确定你是否能够做到这一点。我的想法是,一旦你的gem构建完成,Rubygems将运行该代码并创建它的静态表示形式……上面的工作方式我只是不认为Rails可以这样做。我需要做的就是在运行/加载时检查Rails版本,以便gem继续适当地支持Rails的每个版本。
“4.0.1”。to_I
4
。如果不关心小数点后的任何内容,则不需要拆分。
Rails.version.to_i>=4
也是一种选择。