[英]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.