标签: opalrb

如何将Ruby编译为Javascript?

我正在研究一个我想在服务器和浏览器中表达的逻辑.类似于验证表单的内容,根据已经输入的内容,元素之间必须存在某些逻辑关系.

所以...如果我可以编写一次逻辑并以某种方式结束Ruby和Javascript,我只需编写一次逻辑,而不必担心确保用不同语言编写的两段代码具有相同的功能行为.

显然,我不需要在Ruby中重现所有内容,一个简化可能是将一个通用的库(如Functional Javascript)移植到Ruby.

有没有人有RubyJS的经验?有人能指点我使用RubyJS的现有项目吗?提前致谢...

javascript ruby compiler-construction opalrb

22
推荐指数
3
解决办法
4513
查看次数

蛋白石的局限性是什么?

我非常热衷于尝试欧泊在一个新的Rails项目,当然风险是,我不会发现什么不能做,直到我花了数百个小时做别的一切,碰到砖墙我无法通过.

有什么限制?

例如(当然,如果还有其他限制需要提及,答案不应限于这些主题)我会假设您不能在您的蛋白石代码中使用任何旧的Ruby库(但我很想知道我错了!).

我猜也许在使用任意JavaScript库时可能会遇到困难,或者有些情况下需要编写JavaScript来与这些库进行交互.

当然,可能会有各种各样的问题,我甚至都没想到.这看起来像是一个了不起的项目,但我想知道如果我只是潜入头脑中,我可能会遇到什么样的问题.

ruby opalrb

13
推荐指数
1
解决办法
1080
查看次数

将Ruby 1.9.2代码转换为JavaScript?

可以将Ruby代码转换为Javascript吗?我听说过RubyJS,但这似乎与Ruby 1.9.2不兼容 - 是这种情况吗?

javascript ruby opalrb

12
推荐指数
2
解决办法
6372
查看次数

获取Ruby Opal代码中的错误行

class Test

  def initialize

  end

  def crash
    print x
  end

end

Test.new.crash
Run Code Online (Sandbox Code Playgroud)

很明显,这个代码片段会在第8行崩溃.如果你用Opal解析它,你将得到这个编译代码:

/* Generated by Opal 0.8.0.beta1 */
(function(Opal) {
  Opal.dynamic_require_severity = "error";
  var self = Opal.top, $scope = Opal, nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass;

  Opal.add_stubs(['$print', '$x', '$crash', '$new']);
  (function($base, $super) {
    function $Test(){};
    var self = $Test = $klass($base, $super, 'Test', $Test);

    var def = self.$$proto, $scope = self.$$scope;

    def.$initialize = function() {
      var self = this;

      return nil;
    };

    return …
Run Code Online (Sandbox Code Playgroud)

javascript ruby opalrb

9
推荐指数
1
解决办法
387
查看次数

转换Javascript数据表以在Rails应用中使用Opal

我正在使用ajax-datatables-rails。下面是我的数据表的JS。我想将javascript转换为等效的Opal.rb。

jQuery(document).ready(function() {
  var table = $('#organizations-datatable');
  var token = $('meta[name=csrf-token]').attr('content');
  table.DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
      "url": "/organizations/datatable.json",
      "type": 'POST',
      "beforeSend": function (xhr) {
          xhr.setRequestHeader('X-CSRF-Token', token)
        }
    },
    "pagingType": "full_numbers",
    "destroy": true,
    "columns": [
      {"data": "name"},
      {"data": "desc"},
      {"data": "industry"},
      {"data": "tags"}
    ],
    "iDisplayLength": 25
  });
});
Run Code Online (Sandbox Code Playgroud)

它包括将CSRF令牌添加到对数据的ajax请求中。

我希望我们所有的JavaScript都被编写为蛋白石,以提高可读性,等等。请不要争论这种选择,我只想了解如何通过opal / rails-ujs / opal-jquery将其用作Opalrb

下面的蛋白石与上面的JS不能实现相同的效果。谁能帮我理解原因?

jQuery(document).ready(function() {
  var table = $('#organizations-datatable');
  var token = $('meta[name=csrf-token]').attr('content');
  table.DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
      "url": "/organizations/datatable.json",
      "type": 'POST',
      "beforeSend": …
Run Code Online (Sandbox Code Playgroud)

javascript ajax ruby-on-rails datatables opalrb

7
推荐指数
1
解决办法
290
查看次数

用Ruby编写Unity游戏

所以我看到团结支持c#,JS和Boo.

我可以学习其中的一个,但我想制作一个"编译器"或类似的东西,让我编写ruby代码,输出JS代码或创建一个可由Unity编译器读取的层.

这甚至是一种可能性.我愿意投入很多时间并拥有相当多的经验.

ruby unity-game-engine opalrb

6
推荐指数
1
解决办法
6121
查看次数

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

有opal-irb和opal-jquery和vienna,但有什么办法可以直接在通过猫眼石的浏览器中使用的宝石?

ruby gem opalrb

6
推荐指数
2
解决办法
1266
查看次数

OpalRb与MeteorJS?

我对Opal提供的使用纯Ruby与CoffeeScript,当然还有JS的方式所提供的力量和优雅感兴趣.

如何利用Opal for Meteor作为开发的主要语言?

更新:只是想分享一下,我们已经将焦点转移到Volt,以便在同构环境中实现我们的实时需求,从而提供从下到上的Ruby.这是一次非常棒的体验,甚至Matz 现在已经发了几次关于它的推文.

javascript ruby meteor opalrb voltrb

5
推荐指数
1
解决办法
785
查看次数

如何从蛋白石调用原生javascript方法?

我正在编写一个基于html画布的简单游戏.我现在正从coffeescript移植到蛋白石.

我想以有效的方式包装CanvasRenderingContext2D对象.

我目前的解决方案是一个包装器,但我真的想让这个免费的桥接器.

app.rb:

class Game
    def initialize
        @canvas = Element.find('#canvas').get(0)
        js_ctx  = `this.canvas.getContext('2d')`        # this is a javascript object
        @ctx    = CanvasRenderingContext2D.new(js_ctx)  # create the proxy
        @ctx.fillStyle='red'
        @ctx.fillRect(10,10,50,50)
    end
end

# the opal proxy class (named $CanvasRenderingContext2D in javascript space)
class CanvasRenderingContext2D
    # I currently model the proxy as a has_a while I'd prefer it to be is_a
    attr_reader :js    # the native javascript object

    def initialize(js)
        @js = js
    end

    # getter
    def fillStyle
        `this.js.fillStyle`
    end

    # setter …
Run Code Online (Sandbox Code Playgroud)

ruby opalrb

5
推荐指数
1
解决办法
1120
查看次数

如何在opal-jquery中使用jquery的.html()?

我已经阅读了所有可以找到的文档,它有点不稳定.有人能告诉我如何.html()在ruby -> jquery桥opal-jquery中使用jquery的方法吗?对于我将如何在未来稀疏记录的宝石中找出已实现的方法的任何建议肯定会受到赞赏.

jquery opalrb

4
推荐指数
1
解决办法
295
查看次数