我刚刚开始使用 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/