我怎么知道gem与某个版本的rails兼容?

时间:2017-04-22 02:27:20

标签: ruby-on-rails ruby rubygems

我刚刚开始使用ruby on rails并且在我按照教程进行操作时,没有解释某些宝石是如何收集并放置在Gemfile中的。我刚刚复制并粘贴它们并将它们放入我的Gemfile并运行bundle install。

如何下​​载特定版本的gem及其依赖项,以及确保它们与我正在使用的rails版本兼容?

3 个答案:

答案 0 :(得分:3)

如果您没有指定Gem版本,Bundler会根据您当前的Rails版本确定要安装的版本。通常,Bundler会在无法安装您指定的版本时向您发出警告。

gem 'gemname'

这将安装与您的Rails版本兼容的任何版本。

gem 'gemname', '1.5'

仅当它支持您当前的Rails版本时,才会安装1.5版。

gem 'gemname',  '>=1.0'

如果可用且兼容,则安装1.0或更高版本。

如果您想安装特定版本(2.2),但是您知道版本3.0会破坏您的代码(某些宝石就像Mailchimp gem那样),您可以指定最低版本和最高版本:

gem 'gemname', '>= 2.2.0', '< 3.0'

由于它或多或少常见,因此有一个捷径:

gem 'gemname', '~> 2.2'

&#34;〜&gt;&#34;将匹配任何小于3.0的版本。它告诉bundler只安装2.X永远不会达到3.0。

您要安装的每个gem都会告诉您哪个版本与您的Rails版本兼容。通常它会说最小版本号。例如,boostrap gem:

https://rubygems.org/gems/bootstrap/versions/4.0.0.alpha3.1

如果您查看该网站,它会告诉您依赖项。它没有提到最小的Rails版本,因此您可以始终安装最新版本:

RUNTIME DEPENDENCIES (2):
autoprefixer-rails >= 6.0.3
sass >= 3.4.19
DEVELOPMENT DEPENDENCIES (13):
actionpack >= 4.1.5
activesupport >= 4.1.5
capybara >= 2.6.0
compass ~> 1.0.3
jquery-rails >= 3.1.0
json >= 1.8.1
minitest ~> 5.8.0
minitest-reporters ~> 1.0.5
poltergeist >= 0
slim-rails >= 0
sprockets-rails >= 2.3.2
term-ansicolor >= 0
uglifier >= 0

如果它在依赖关系下指定Rails版本:

rails >= 4

这意味着您至少需要Rails 4.0。

答案 1 :(得分:2)

对于rails 4和5,您可以查看here。如果宝石准备就绪。

如果您编写gem 'gemname',当您运行捆绑安装时,Rails会自动安装最适合的最新版本的gem。在其他答案中提到了指定gem版本。

如果gem中需要特定版本的ruby或rails或任何依赖项。然后在gem的gemspec文件和gemfile中为该gem指定。

如果在安装捆绑包时出现问题,您也可以交叉检查gem的gemspec或Gemfile。

答案 2 :(得分:0)

在宝石文件中,您可以按如下方式列出宝石:

要加载最新的稳定版本,请保留版本

gem 'gemname', '1.0.0' # or whatever version you want to specify

要加载特定版本,请添加版本

gem 'gemname', '~> 1.0.0' # this will load version 1.0.x with x being the highest sub-version.
gem 'gemname', '~> 1.0' # will load version 1.x
gem 'gemname', '~> 1.3' # will load version 1.3 or higher but less than 2.0

加载特定版本或任何最高版本的subversion

bool List::remove(const string& data){

for (int i = 0; i < totalItems; i++)
{

    if (items[i] == data)
    {

        for (int j = i; j < totalItems-1; j++)
        {

            items[j] = items[j+1];

        }
        totalItems--;
       return true; 
    }
}
return false;

您可以通过运行捆绑软件更新,根据您列出它们的方式(按照上述内容)更新gemfile中的gem版本。

要知道版本是否与您的Rails版本兼容,我通常会在rubygems.org上查看发布日期与最新主要Rails版本的发布日期。 2013年6月至2016年6月期间发布的宝石很可能是针对Rails 4.它可能会也可能不会在Rails 5(2016年6月发布)中发挥作用。我发现大多数适用于Rails 4的宝石都可以在Rails 5中运行,而Rails 5已经足够长,可以解决具有特定宝石兼容性的问题。 2013年6月之前的最后发布日期的宝石(对于Rails 3或更早版本)我避免使用。