繁体   English   中英

解决gem版本不兼容

[英]Resolving gem version incompatibility

我是Ruby,Rails和gem管理的新手。 我注意到的一件事是,每当我运行bundle install (甚至在项目目录中)时,似乎也会安装gem,这也会影响其他基于gem的Rails项目。

例如,假设在一个基于gem的Rail项目(从gemfile安装了一堆gem)中运行bundle install之后,我遇到了gem不兼容的问题。 现在,这些问题也将在所有其他基于gem的项目中体现出来,并且在我每次尝试rackup都会表现出来

我的问题是:
1)是否可以将这种损坏(gem版本不兼容)本地化到当前项目,而不会影响其他项目?
2)是否有一个好的方法来获取一组兼容的gem,或者是逐个查看gem依赖关系(查看树)并找出兼容的gem的唯一方法? 我似乎在此上浪费了很多时间,如果我修复某个问题,其他事情似乎会中断。

请让我知道我在这里缺少什么,或将我指向资源。

谢谢

听起来您好像缺少使用bundle exec

说明该命令执行该命令,使Gemfile(5)中指定的所有gem都可以在Ruby程序中使用。

本质上,如果您通常运行rspec spec/my_spec.rb类的东西,并且想要使用Gemfile(5)中指定并通过bundle install(1)安装的bundle exec rspec spec/my_spec.rb ,则应该运行bundle exec rspec spec/my_spec.rb

bundle install会将gems安装到$GEM_HOME ,这可由使用相同ruby的任何应用程序共享,并且可能导致安装了同一gem的多个版本(这是正常现象)。 如果您还不使用bundle exec只加载Gemfile中指定的gem版本,则可能会出现不兼容错误或意外行为,因为ruby不知道需要哪个版本的特定gem。


RVM,rbenv和其他ruby版本管理器是有用的工具,既可以隔离每个项目的gem(在同时使用bundler时也不是必须的),并且允许在同一台计算机上安装多个ruby版本(bundler不能处理)并且在开发具有不同Ruby版本要求的多个应用程序时非常有用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM