来自ruby gem的未初始化的常量

时间:2010-06-30 20:24:39

标签: ruby-on-rails ruby rubygems wrapper

我正在尝试实现名为stanfordparser的宝石,可在此处找到:http://stanfordparser.rubyforge.org/

它是java自然语言解析器的ruby包装器

我正在使用windows 7机器上的rails / jruby上的ruby开发netbeans。我的网络应用程序工作正常,但当我尝试添加解析器包装时,它会中断。

以下是导致问题的代码:

gem 'stanfordparser'

def show
 parser = StanfordParser::LexicalizedParser.new
 @words = parser.apply("This is a sentence.")
end

这是在taskscontroller

当我去任务/显示(如果我删除此代码,工作正常)我得到以下错误

uninitialized constant TasksController::StanfordParser

我确保gem已安装在netbeans

我对铁轨上的红宝石很新,并自学,所以它可能是显而易见的

谢谢!

编辑:我检查了我的glassfish服务器日志,并说

SEVERE: Missing these required gems:
  stanfordparser

这很奇怪,因为我已经使用netbeans安装了gem,我已经完成了rake gems:install和netbeans说安装了gem。我已经检查了netbeans gems文件夹,并在那里安装了gem。

编辑2:

所以,经过大量的研究和敲击后,我决定通过尝试使用jruby来实现java类来简化一些事情,现在我需要弄清楚如何导入stanfordparser java类(那里)至少50),我想我需要将所有类压缩到一个jar中,以便jruby可以加载它。也许。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Rails 3,则需要在项目根目录下的Bundler的 Gemfile 中指定gem 'stanfordparser'语句。否则,对于Rails 2.x,您需要在 config / environment.rb 中添加config.gem 'stanfordparser'语句。

答案 1 :(得分:0)

我能够通过以下方式解决我的问题:

而不是使用stanfordparser ruby​​包装器(实现java ruby​​ bridge将java stanford解析器连接到纯ruby),我使用jruby来实现stanford解析器中的java。

最终工作的代码:

include Java
require 'C:\\Stanford-Parser\\Current\\stanford-parser.jar'
require 'rubygems'
include_class 'edu.stanford.nlp.parser.lexparser.LexicalizedParser'

lp = LexicalizedParser.new(args) #args is the arguments, not copied here