我在模型中使用“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可以解决这个问题,那是正确的地方吗?
答案 0 :(得分:2)
这看起来可能是因为Padrino重新加载器在重新加载thing.rb
文件时感到困惑,导致Ruby在V8
命名空间中查找Thing
。
尝试使用V8
前缀明确指定::
位于顶层:
def self.ctx; @@ctx ||= ::V8::Context.new; end;
答案 1 :(得分:0)
如果将其添加到Gemfile中,您可以将它放在任何地方。你加了吗?
谢谢!