我可以在蛋白石中使用Ruby宝石吗?

时间:2014-07-04 11:19:29

标签: ruby gem opalrb

opal-irbopal-jquery以及vienna但是有没有办法通过Opal在浏览器中直接使用gems?

2 个答案:

答案 0 :(得分:6)

您可以使用lib

向Opal加载路径添加gem的Opal.use_gem路径

常见的陷阱是:

  • 使用String mutability
  • 依赖于String和Symbol之间的区别
  • 炮轰(``%x{}

修复/解决其中一些问题的可用工具包括:

  • 存根文件Opal::Processor.stub_file('fileutils')
  • 使用RUBY_ENGINE在编译时隐藏代码分支, 例: unless RUBY_ENGINE == 'opal' unparsable/breaking code here end

您可以查看opal-rspec源代码,了解这些内容:

https://github.com/opal/opal-rspec

答案 1 :(得分:3)

与往常一样,答案是肯定的,但同时不是,这取决于你的观点。 Opal会将您的ruby(所有)转换为JavaScript并提供适当的运行时间。如果您需要gem,则在编译过程中将需要它,并将包含在生成的JavaScript中。您可以在ruby代码中自由使用生成的ruby类(它最终会被编译成JavaScript)。

所以你可以需要宝石,但要记住他们的需求也是必需的,所以如果你不是,那么最终会得到一个JavaScript文件的噩梦小心。 技术上仍然没有在浏览器中运行ruby,为了这个目的,所有这些都必须编译为JavaScript。但是你可以运行你的ruby生成的代码和所需的宝石,虽然它在这个过程中会变成JavaScript(你必须这样调试它)。但是这种方法存在一些限制,您必须牢记JavaScript NumberString属性(也称为只有不可变String s),但在这些限制内,您可以共享您的代码服务器和客户端之间。