0

我在模型中使用“therubyracer”,并且我要求在模型的顶部是这样的:

require 'v8'
class Thing
  def self.ctx; @@ctx ||= V8::Context.new; end;

  def self.eval(script); ctx.eval(script); end;
end

但是,我间歇性地得到:

NameError - uninitialized constant Thing::V8: 
/app/thing.rb:3:in `ctx'

通过本地 Padrino 服务器测试请求时,显然是在我修改了 Thing 中的代码之后。这可以通过重新启动 padrino 服务器来纠正。我假设在其他地方需要 v8 可以解决这个问题,正确的地方在哪里?

4

2 回答 2

2

这看起来可能是由于 Padrino 重新加载器在重新加载thing.rb文件时感到困惑,导致 RubyV8Thing命名空间中查找。

尝试使用前缀显式指定V8is 在顶层:::

def self.ctx; @@ctx ||= ::V8::Context.new; end;
于 2013-01-28T22:23:46.000 回答
0

如果将其添加到 Gemfile 中,则可以将其放在任何位置。你加了吗?

谢谢!

于 2013-01-28T19:22:43.590 回答