首页 > 解决方案 > 找出哪个 gem 正在请求 rb-inotify

问题描述

试图找出哪个 gem 正在请求特定的 gem。除非我将有问题的 gem 固定到特定版本,否则捆绑不会构建,它隐藏了请求的 gem 信息(gem 看起来像是从 gemfile 加载的,但只是因为它不会使用最新版本构建)。我怎样才能找出请求的宝石?

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

标签: ruby-on-railsrubygemsbundler

解决方案


试图找出哪个 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.


推荐阅读