关于ferret和acts_as_ferret的问题!

环境:windowsXP + ruby 1.86 + rails 2.2.2

要实现全文搜索功能!

安装ferret:gem install ferret -v=0.11.5 --platform mswin32

安装acts_as_ferret:将svn://projects.jkraemer.net/acts_as_ferret/tags/stable/acts_as_ferret里的文件导出到vendor\plugins\acts_as_ferret里。

结果无法启动Mongrel了:

[code="ruby"]
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)

=> Rails 2.2.2 application starting on http://0.0.0.0:3000

=> Call with -d to detach

=> Ctrl-C to shutdown server

** Starting Mongrel listening at 0.0.0.0:3000

** Starting Rails with development environment...

Exiting

F:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- ferret_ext (MissingSourceFile)

    from F:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

    from F:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'

    from F:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'

    from F:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'

    from F:/ruby/lib/ruby/site_ruby/1.8/ferret.rb:25

    from F:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'

    from F:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

    from F:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'

     ... 47 levels...

    from F:/ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49

    from F:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'

    from F:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

    from script/server:3

[/code]

然后把vendor\plugins\下的acts_as_ferret整个删除就能正常启动mongrel了。

我直接用gem install acts_as_ferret来安装,然后在environment.rb 里添加require 'acts_as_ferret'后,还是无法启动mongrel.

好吧,这的确是一个十分诡异的错误,而且,似乎是win下才会有的。

原因是ferret_ext找不到,而你又确实安装了,说明这个ferret_ext.so(就是C编译完后以便ruby调用的库),不在ruby可以找到的lab路径。那么,照这个逻辑可以


[quote] C:\ruby\lib\ruby\gems\1.8\gems\ferret-0.11.5-x86-mswin32\ext [/quote]
下的 ferret_ext.so 文件拷贝到
如下目录
[quote]C:\ruby\lib\ruby\gems\1.8\gems\ferret-0.11.5-x86-mswin32\lib[/quote]

应该就可以用,试试