找出哪个宝石正在请求rb-inotify

问题描述

试图找出哪个gem正在请求特定gem。除非我将有问题的gem固定到一个特定的版本,否则该软件包不会构建,该版本隐藏了请求的gem信息(gem看起来好像是从gemfile加载的,但是,这是因为它不会使用最新版本进行构建) )。我该如何找出请求的宝石?

tl; dr;我正在尝试从Mac OS X系统上的Rails 4.1迁移到4.2。一些gem请求rb-inotify,并且它的最新版本无法正常工作,因为它需要Ruby> = 2.2,而我使用的是2.0。我可以将rb-inotify添加到0.9.1版的gemfile中,以完成构建,但是由于在libc.dylib中找不到“ inotify_init”,因此我的应用在ffi中的attach_function中运行失败。 rb-inotify未在4.1中加载,因此我怀疑我得到了某个错误版本的gem,该版本在不应该使用rb-inotify时要求它。我想看看哪个gem具有rb-inotify作为依赖项,但是由于我必须将其固定到版本'0.9.1'才能得到构建,因此gemfile只是按照gemfile的要求显示它,而没有其他任何显示宝石。我尝试将所有gems的gempspecs复制为rb-inotify,但唯一的匹配项来自listen和newrelic-rpm(即使成功构建后,都不包含在我的捆绑包中)。我如何确定要插入哪个宝石并请求rb-inotify?

解决方法

原来,SASS正在请求rb-inotify。它正在加载最新版本的SASS,我不得不将其(和sass-rails)固定到旧版本。帮我找到这个的是this SO post的DependencyTree解决方案。

,

试图找出哪个gem正在请求特定gem。 ...我如何找出请求的宝石?

yarn why的启发,我为此编写了一个捆绑程序插件。

bundle why tzinfo
ransack -> activesupport -> tzinfo
rspec-rails -> activesupport -> tzinfo
business_time -> tzinfo

https://github.com/jaredbeck/bundler-why

或者,您可以grep Gemfile.lock