0

我已经为 C/Objective-C 构建了一个 Ruby 扩展,现在想在 Ruby on Rails Web 应用程序中使用它,但每次我尝试要求它时,WEBrick 都会崩溃!我所拥有的是:

  1. 我有一个 Ruby 类:MyRubyObject,它与 C 类(MyExtension)相关联。
  2. MyRubyObject 已使用一种方法定义:myRubyMethod,它与我的 C 类中的一个函数绑定,MyExtension: myextensionmethod 只返回一个字符串。
  3. myextensionmethod 本质上调用了另一个库,该库执行大量工作(多个线程等等),但最终返回一个字符串
  4. 编译完所有内容后,我得到了一个 MyRubyObject.bundle 文件。使用 IRB,我可以:

    需要'./MyRubyObject' p = MyRubyObject.new p.myRubyMethod => "结果!"

  5. 这一切都很好,现在我想在 RoR 应用程序中使用它

  6. 我将 MyRubyObject.bundle 放在我的 RoR 应用程序的 lib 中,然后从控制器类中执行 require ./lib/MyRubyObject.bundle 和 WEBrick 崩溃!!!!

任何帮助将不胜感激!!!

干杯

4

1 回答 1

0

我从这里找到了一个解决方案:ruby​​-ldap gem not work in rails3 app, but work in rails console

  • 在 config/environment.rb 文件中放置一个 'require File.expand_path('../../lib/MyRubyObject', __FILE__)'(在 'require File.expand_path('../application', __FILE__)' 之后)

  • 然后在我的控制器文件中,我只是放了一个 require 'MyRubyObject' 然后就可以正常实例化: p = MyRubyObject.new ...

因此,我认为这是与 WEBrick 基于上述链接以不正确的顺序加载内容有关的问题,但我会密切关注这一点,因为我们很可能会移动服务器,而且这个问题可能会再次出现丑陋的问题!

希望这对其他人有帮助!谢谢

于 2013-06-17T08:40:35.410 回答