rake db:migrate error(未找到函数’inotify_init’)

在此处输入图像描述

我刚刚完成了在我的旧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:我一直在看卫兵gem ,特别是这部分:

在此处输入图像描述

我添加了这个,它将执行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 

基本上,我团队中的某些人添加了某些东西的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 

为我工作,快乐编码!