Tag: ruby

尝试使用browserify-rails时失败的资产编译

我正在开发一个Ruby on Rails 4.x项目,我想使用browserify-rails gem,这样我就可以在一些JavaScript文件中使用CommonJS了。 在开发过程中,这在本地非常有效,但是在Heroku上资产汇编失败。 第一个问题是Heroku Ruby buildpack将节点0.4.7添加到/app/bin ,并且首先在PATH环境variables中。 这打破了浏览。 我改变了一个Ruby buildpack,不会这样做,所以现在我的.buildpack文件看起来像这样: https://github.com/PROJECT_NAME_HERE/heroku-buildpack-vendorbinaries.git https://github.com/heroku/heroku-buildpack-nodejs https://github.com/cymen/heroku-buildpack-ruby.git 尝试编译使用CommonJS require的JavaScript资源时发生错误(因此触发了browserify-rails ): rake aborted! Error while running `/tmp/build_a95a51d0-fdb1-4035-ad56-97c40f738540/node_modules/.bin/browserify –list`: /usr/bin/env: node: No such file or directory (in /tmp/build_a95a51d0-fdb1-4035-ad56-97c40f738540/app/assets/javascripts/designer.js)/tmp/build_a95a51d0-fdb1-4035-ad56-97c40f738540/vendor/bundle/ruby/2.0.0/bundler/gems/browserify-rails-f3df1d20b466/lib/browserify-rails/browserify_processor.rb:92:in `run_browserify' /tmp/build_a95a51d0-fdb1-4035-ad56-97c40f738540/vendor/bundle/ruby/2.0.0/bundler/gems/browserify-rails-f3df1d20b466/lib/browserify-rails/browserify_processor.rb:40:in `dependencies' /tmp/build_a95a51d0-fdb1-4035-ad56-97c40f738540/vendor/bundle/ruby/2.0.0/bundler/gems/browserify-rails-f3df1d20b466/lib/browserify-rails/browserify_processor.rb:33:in `asset_dependencies' /tmp/build_a95a51d0-fdb1-4035-ad56-97c40f738540/vendor/bundle/ruby/2.0.0/bundler/gems/browserify-rails-f3df1d20b466/lib/browserify-rails/browserify_processor.rb:13:in `evaluate' … 所以看起来在Ruby on Rails构build步骤中,节点二进制文件是不可访问的。 这是因为节点位于Ruby buildpack的PATH设置不包含/app/vendor/node/bin/node吗? 我试图像这样添加一个postinstall到packages.json : … "scripts": { "postinstall": "ln […]

在rails服务器端运行javascript

我有一个Rails应用程序,这是REST API。 我有一部分模型是用户可以上传的JavaScript脚本。 我想创build一个后台工作人员的任务,我可以做networking请求,并执行JavaScript的networking请求服务器端的结果,然后将其保存到数据库。 现在我已经被告知考虑使用Rails前端API,然后使用NodeJS服务器作为工作者并执行JavaScript。 我主要关心的是用nodejs orm和rails orm开发一个跨平台的模式。 所以我的问题是双重的是有一种开发数据库架构的方式,所以它在Node JS服务器和Rails服务器上都是同步的。 否则有没有办法在rails服务器上执行javascript?

在VSCode中debuggingRuby代码时出错(Mac OS X)

我想弄清楚这个新的Visual Studio代码(VSCode)编辑器,同时也学习Ruby。 每当我尝试debugging一个简单的ruby程序(甚至是Hello World)时,我收到以下错误VSCode 错误:无法在debugging模式下启动“节点” 这是我的terminal显示的内容: /Users/Chixco/Documents/RubyProjects/FirstApp/test.rb:1 (function (exports, require, module, __filename, __dirname) { puts "Hello!" ^^^^^^^^ SyntaxError: Unexpected string at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.runMain [as _onTimeout] (module.js:501:10) at Timer.listOnTimeout (timers.js:110:15) 这是我如何configuration我的launch.json文件: { "version": "0.1.0", // List of configurations. Add new configurations or […]

导轨转向基础的游戏经理

我正在写一个回合制的纸牌游戏(线上线上扑克)。 我有使用rails的经验,所以我想使用它的大部分的逻辑,如用硬币和统计pipe理用户,pipe理房间和游戏。 我打算使用节点js + socket.io + redis来提供实时消息服务器 – >客户端(基本上使用rails的redis发布消息,在node.js端监听它们并通过socket.io发布到客户端)和使用REST API从客户端 – >服务器进行通信。 我坚持的部分是试图pipe理轨道内的实际游戏逻辑。 我将需要一个正在进行的游戏的游戏pipe理器来评估游戏中发生的所有事情(交易卡,接受投注,通过玩家轮stream,评估结果等)。 特别是有两件事情对我来说似乎不太可能,那就是从我迄今为止使用rails构buildwebapp的经验来看这种情况: 将游戏pipe理器作为内存中的单个共享对象:我认为这可能是一个rediscaching对象,将在每次状态更改时重新加载,并以新状态再次保存,这似乎是一个很大的开销。 另一件我正在考虑的事情是拿着一个游戏pipe理器对象的散列,每个正在进行的游戏作为一个静态对象,可以从rails应用程序的任何地方访问。 任何我在这里失踪? 这可以以某种方式改善或任何其他方法来做这种function? 有一个计时器,在等待玩家进行动作时发出嘀嗒如同任何基于回合的游戏,我需要等待特定的秒数,直到玩家反应,如果玩家不采取行动让我们说20秒,那么服务器应该自动移动到下一个玩家。 我真的不知道如何在轨道上做到这一点。 我考虑的一种方法是延迟的任务,在20秒之后运行,并且如果用户在其之前行动,到期的玩家转向或被取消。 (使用sidekiq作为这些任务的例子)。 编辑 我被困在devise如何实现实际的游戏逻辑,这就是为什么我需要一个游戏经理,每个活跃的游戏(每个游戏至less有2个玩家)需要有一个计时器滴答滴答,那里需要一个如果玩家没有轮到下一个玩家,则在x秒后callback。 由于每个请求的无状态性质,我不明白我该如何做到这一点,我需要在内存中存储游戏状态并以某种方式运行计时器。 我相信我可以在node.js中的游戏逻辑中解决这个特定的问题,但我宁愿使用node.js来pipe理套接字连接,并通过redis pub / sub接收事件。

在Nodejs和Ruby中encryption

我想encryption一个string并传递给Rails应用程序,所以我在Nodejs和Ruby中都find了encryption库。 在Nodejs中: var crypto = require('crypto'), algorithm = 'aes-256-ctr', password = 'd6F3Efeqd6F3Efeqd6F3Efeqd6F3Efeq'; function encrypt(text){ var cipher = crypto.createCipher(algorithm,password) var crypted = cipher.update(text,'ascii',"base64") crypted += cipher.final("base64"); return crypted; } 结果是: encrypt("1") //-输出 2g== 在Ruby中 def encrypt(des_text) des = OpenSSL::Cipher::Cipher.new('aes-256-ctr') des.encrypt des.key = 'd6F3Efeqd6F3Efeqd6F3Efeqd6F3Efeq' result = des.update(des_text) result << des.final return Base64.encode64 result end 结果是: encrypt("1") # […]

ExecJS :: ProgramError中的欢迎#索引

在安装了Ruby 2.3.3,Rails 5.0.0.1和NodeJS 4.2.6的Ubuntu 16.04上,我生成了一个带有bin/rails generate controller welcome index的玩具控制器。 在运行bin/rails server ,我在浏览器中打开了http://localhost:3000/welcome/index以获得以下错误: ExecJS::ProgramError in Welcome#index Showing /rails-app-path/app/views/layouts/application.html.erb where line #7 raised: ReferenceError: CoffeeScript is not defined Extracted source (around line #7): <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> </head>

如何在JavaScript中实现Ruby的扩展模块

在Ruby中,我可以在运行时在对象上扩展一个模块。 我认为JavaScript可以得到的function,但我不能得到它的工作。 Ruby运行正常,对象有test1和test2方法: class Test def test1 puts "test1" end end module Other def test2 puts "test2" end end test = Test.new test.extend(Other) test.test1 test.test2 JavaScript返回一个TypeError:test_new.test2不是一个函数 class Test { test1(){ console.log("test1") } } class Other { test2() { console.log("test2") } } console.log(Object.getOwnPropertyNames( Test.prototype )) console.log(Object.getOwnPropertyNames( Other.prototype )) var test = new Test var test_new = […]

node.js / ruby​​与beanstalkd的集成

这与付款处理的另一个问题有关,这就是我的示例用例,但我正在考虑尝试使用beanstalkd将node.js和ruby集成到同一台服务器上。 基本上,我想使用node.js作为我的主要Web服务器,但是当我需要做一些支付处理时,我想使用像Ruby这样健壮和稳定的东西。 我正在考虑尝试使用beanstalkd作为一种方式,让node.js将支付处理作业排队等待ruby在后台执行。 beanstalkd的文档有点渺茫,所以我很难弄清楚这是一个好方法,还是我怎么去做。 从我可以告诉的,它应该是相当简单的启动一个beanstalkd进程,然后有node.js连接到它发送作业,并有一个Ruby脚本,可以执行作业,并发回结果。

Ruby / node.js + Amazon SES:是否有Amazon SES API?

我已经看到了几个使用亚马逊SES的gem。 但是,我找不到任何由Amazon提供的API来构build没有这个gem的服务。 我怎样才能做什么gem,而不使用gem? 这对我的应用程序非常重要,因为我不断地发送密钥。 谢谢

为什么ruby“要求”不是更精细?

说明性的例子 在文件b.rb中我有以下两个类:狗和猫。 在ruby中,要使用文件b.rb中定义的类Dog,我必须要求b.rb: require 'b' puts Dog.new.bark 但是,即使我不需要Cat,也会定义它,因为所需文件中的所有类都已加载。 这个问题 所以我的问题是:为什么Ruby中没有一种方法只需要文件的一部分? 在Ruby中是不是有必要考虑这个问题,还是将它包含在语言未来的一些路线图中? 在Python中,他们有from module import MyClassforms,它可以让导入文件select要导入,并在module.export世界,他们有module.export ,它可以让导入的文件select要导出。 在我看来,Python和NodeJS在这方面更加灵活。 ruby的select有什么权衡? 附加问题:如何调用python / nodeJS机制( select性导入 ?)?