2

在此处输入图像描述

我刚刚在我的旧 mac 书上设置了我的 rails 环境并遇到了这个错误。我已经安装了 FFI 和 rb-inotify。我也再次运行了 bundle install 。我看过

https://github.com/ffi/ffi/issues/66

https://groups.google.com/forum/?fromgroups=#!topic/ruby-ffi/gj3_k34o80k

这两者都表明这是一个特定于 linux 的 API。这些链接中的第二个有一个建议,说我应该删除那个 gem 和依赖它的东西,但我对删除似乎依赖它的 FFI 犹豫不决。

您建议采取什么行动?非常感谢您对此事的任何建议。

编辑:我正在运行 rails 3.2.7(今晚更新到 3.2.11)。

编辑2:我发现了这个:Rubygems:如何添加特定于平台的依赖项?. 这有帮助吗?

编辑3:你认为它可能与rbenv有关吗?

编辑 4:我将开发 gem 从 rb-inotify 更改为 rb-fsevent,运行 bundle install 然后执行 db:migrate。

在此处输入图像描述

它继续运行迁移。

嗯...我问我的团队成员使用 macs 已经尝试执行 rake db:migrate,因为我们的 Linux 开发人员将 rb-inotify 添加到我们的 gem 集中。

此链接可能对以这种方式出现的人有所帮助:https: //supportbee.com/devblog/2012/07/18/using-platform-dependent-gems-rb-inotify-and-rb-fsevent/

编辑5:我一直在看守卫宝石,特别是这部分:

在此处输入图像描述

我添加了这个,它将执行 rake db:migrate,但我仍然得到一个非常类似于以下内容的错误列表:

Could not open library 'libgtk-x11-2.0': dlopen(libgtk-x11-2.0, 13): image not found.

我想我正在走向一个完整的解决方案!

编辑 7:查看这个 stackoverflow 问题,了解由于 libnotify gem 导致的剩余错误:升级到 Rails 3.1 后未找到图像错误,如何修复?. 它建议这样做:

gem 'libnotify' if /linux/ =~ RUBY_PLATFORM
gem 'growl' if /darwin/ =~ RUBY_PLATFORM
4

1 回答 1

12

本质上,我团队中的某个人添加了一些特定于 Linux 的安装。要修复它,请执行以下操作:

对于 rb-inotify 的东西,这样做:

group :development do
  gem 'rb-inotify', :require => false
  gem 'rb-fsevent', :require => false
  gem 'rb-fchange', :require => false
end

如果您有 libnotify,请执行以下操作:

gem 'libnotify' if /linux/ =~ RUBY_PLATFORM
gem 'growl' if /darwin/ =~ RUBY_PLATFORM

为我工作,快乐编码!

于 2013-01-13T03:19:32.070 回答