ruby-on-rails - 我怎么知道一个 gem 与一个版本的 rails 兼容?

标签 ruby-on-rails ruby rubygems

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

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

最佳答案

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

gem 'gemname'

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

gem 'gemname', '1.5'

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

gem 'gemname',  '>=1.0'

这会安装 1.0 或更高版本(如果可用且兼容)。

如果您想安装特定版本 (2.2) 但您知道版本 3.0 会破坏您的代码(有些 gem 会这样做,例如 Mailchimp gem)您可以指定最低版本和最高版本:

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

由于它或多或少很常见,所以有一个快捷方式:

gem 'gemname', '~> 2.2'

“~>”将匹配任何小于 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。

关于ruby-on-rails - 我怎么知道一个 gem 与一个版本的 rails 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43554568/

相关文章:

ruby-on-rails - 在ruby on rails中,当记录有多个标签时如何按标签对记录进行分组

ruby - 迭代所有 mongoid 字段的最佳方法

ruby - 无法将控制台输出保存为 Ruby 变量

rubygems - 如何撤消捆绑安装?

ruby-on-rails - 使用 Ruby on Rails 的表单助手

ruby-on-rails - capybara 方法未定义

ruby-on-rails - jRuby with Rails 4的好处

ruby - 如何将剪贴板内容粘贴到文件中?

ruby - 在 Mac OS X 上使 RDoc Ruby Gem 默认

ruby-on-rails - 如何使用 Fish shell 为 gem 设置路径?