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

Foo*_*hap 2 ruby rake ruby-on-rails dbmigrate ruby-on-rails-3.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.有人建议在第二个链接中说我应该删除那些宝石以及依赖它的东西,但是我对删除似乎依赖它的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.
Run Code Online (Sandbox Code Playgroud)

我想我正在进步到一个完整的解决方案!

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

gem 'libnotify' if /linux/ =~ RUBY_PLATFORM
gem 'growl' if /darwin/ =~ RUBY_PLATFORM
Run Code Online (Sandbox Code Playgroud)

Foo*_*hap 12

基本上,我团队中的某些人添加了一些特定于Linux的安装.要解决此问题,请执行以下操作:

对于rb-inotify内容,请执行以下操作:

group :development do
  gem 'rb-inotify', :require => false
  gem 'rb-fsevent', :require => false
  gem 'rb-fchange', :require => false
end
Run Code Online (Sandbox Code Playgroud)

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

gem 'libnotify' if /linux/ =~ RUBY_PLATFORM
gem 'growl' if /darwin/ =~ RUBY_PLATFORM
Run Code Online (Sandbox Code Playgroud)

为我工作,快乐编码!