通过getctipt(或xhr'ed和evaled)从客户端调用的蛋白石文件无法被证实和使用

时间:2015-10-19 15:21:06

标签: opalrb

我想xhr一些蛋白石脚本,并使用那里定义的ruby代码。我试图用$ .getScript来获取它。但对我来说没有成功。

$.ajax({
  url: 'assets/foo.js.rb',
  success: function(data){
    #{ClassInFooJs.new}
  },
  dataType: "script"
});

此外,脚本被唤醒(以奇怪的方式),我的意思是我可以从控制台调用Opal.modules [“file_i_required”],它将基本返回已编译的代码。

但是内部没有任何东西被唤醒,(没有console.logs,window["foos"] = #{something}),我无法从该文件中引用任何内容。

任何帮助?

1 个答案:

答案 0 :(得分:1)

您应该使用Opal中的require "foo"或JavaScript中的Opal.require("foo")。如果需要load "foo"行为,请注意Opal.load("foo")也存在。

另一种方法是在:requirable标志设置为false的情况下编译服务器上的文件,但除非您手动编译,否则这有点困难。有关详细信息,请参阅API docs

应该避免直接拨打Opal.modules["foo"](Opal),因为它没有正确更新$LOADED_FEATURES,并且通常可能会在将来发生变化。