小编Ale*_*ski的帖子

何时使用在Ruby中启动子进程的每种方法

1. ``Backtick

1. a)%x{}百分比X <Backtick的替代语法

  • 在parse.y中定义,请参阅讨论

2. system()

3. fork()

4. open()

4.A. IO.popen()<表现相同open()

4.B. open("|-")

  • 叉到管道

4.C. IO.popen("-")<表现相同open("|-")

5. Open3.popen3()

  • require 'open3'
  • stdlib Open3

6. PTY.spawn()

  • require 'pty'
  • stdlib PTY

7. Shell.transact()

  • require 'shell'
  • stdlib Shell

什么时候应该放弃一个更复杂的方法的可信赖的背叛?

编辑1. 非常感谢Avdi Grimm的帖子描述了每种方法的示例用法:#1(&gist); #2(&gist); #3.

他们是很好的资源来回答如何,但没有明确的组成来回答每个应该使用为什么,并因此恕我直言这个问题不完整的答案.

ruby performance standards subprocess coding-style

60
推荐指数
3
解决办法
8120
查看次数

在Rails中建模无向图?

导入图形数据库的语言,了解

  1. 节点(由圆圈表示),
  2. 边缘(用箭头表示),和
  3. 属性(节点/边的元数据)

图数据库属性图

图形(由维基百科提供)描述了有向图.

在Rails中建模无向图的最佳方法是什么?

也就是说,所有边都是倒数的图(如上图所示),并且每个边的属性无论方向如何都是相同的(与上图相反).

让我们假设通过ActiveRecord使用sql存储设置默认的Rails 3.

多态关联将创建有向图,能够对上述图像描述的数据进行建模.

def Edge < ActiveRecord::Base
  belongs_to :head, polymorphic: true
  belongs_to :tail, polymorphic: true
end

class Node < ActiveRecord::Base
  has_many :from, as: :head
  has_many :to, as: :tail
end

class Group < ActiveRecord::Base
  # a Node of Type: Group
  has_many :from, as: :head
  has_many :to, as: :tail
end
Run Code Online (Sandbox Code Playgroud)

是否应该扩展此模型以管理反向关系,还是更好的模型?


应用程序的一个元素可能是图形问题,但这并不意味着应用程序以问题为中心,必须对数据执行图形横向,也不表示数据集大于可用内存.

polymorphism prototyping activerecord ruby-on-rails graph

19
推荐指数
1
解决办法
2928
查看次数

Javascript二维码阅读图书馆

我希望在基于PhoneGap的移动应用程序中使用QR码.有几种方法可以使用javascript生成QR码.我正在使用Jerome Etienne的基于jquery的解决方案.

我正在为支持摄像头的平台寻找纯Javascript解决方案或一组PhoneGap插件,这些平台将读取图像中的QR编码数据.

到目前为止,我发现的只是LazarSoft的一个演示.还有其他解决方案吗?

javascript qr-code cordova

16
推荐指数
3
解决办法
4万
查看次数

是否有JavaScript的Money类?

免责声明:截至2011年10月14日,为了清晰起见,完全重写

鉴于number JavaScript中的原语是IEEE 754 64位浮点(在其他语言中称为双精度),并使用浮点数来模拟货币是一个坏主意,是Money原型(JavaScript)Coffeescript类,可以简化使用伪整数美分和字符串货币ISO 4217代码表示可用的货币?

^还有更好的方式来表达这一点.

我希望找到能够反映其他许多语言的常见设计模式的东西,其中包括整数原语.

作为示例,我熟悉ruby 的money gempython-money包,它们都实现了这种设计模式的变体.

理想情况下寻找能与backbone.jsnode.js配合使用的东西,但所有建议都值得赞赏.

编辑4:据我所知,只要roundDownOrUp ? floor : ceiling在每次操作后调用Number的实现(&在链接操作之间),一切都会像处理整数那样起作用.


旧信息,保留以记录问题的历史.

我读过如何在JavaScript中将数字格式化为金钱? 在那里我找到了accounting.jsjQuery Globalize,它们都做了漂亮的打印但不是为了模拟货币并用它们执行操作.

编辑1:刚刚在npm注册表中找到了知道ISO 4217的JSorm货币,但似乎没有包含浮动" 陷阱 "的任何修复.如果我有误读,请更正.

编辑2折叠成重写.

编辑3:看起来好的选择是使用@RicardoTomasi建议的node-bigint.

javascript currency node.js backbone.js

16
推荐指数
1
解决办法
6132
查看次数

使用Rails 3.1资产管道包含外部库

背景:我希望在我的应用程序中使用freebase建议.

我打算#location使用coffeescript 为输入添加自动完成:

$ ->
  $("#location").suggest type: "location"
Run Code Online (Sandbox Code Playgroud)

require_tree我的application.js文件中的资产管道将包含哪些内容:

//= require jquery
//= require jquery_ujs
//= require modernizr
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

我必须复制suggest.min.jsapp/assets/javascripts并要求其为

//= require suggest.min
Run Code Online (Sandbox Code Playgroud)

或者我可以直接从其公开网址中提出要求吗?

javascript freebase jquery-ui ruby-on-rails-3 asset-pipeline

15
推荐指数
1
解决办法
1万
查看次数

为什么return语句会破坏条件运算符?

尝试使用ruby中的条件运算符,

def nada
  false ? true : nil
end

def err
  false ? true : raise('false')
end
Run Code Online (Sandbox Code Playgroud)

按预期工作但是

def reflection
  false ? true : return false
end
Run Code Online (Sandbox Code Playgroud)

生产一个 syntax error, unexpected keyword_false, expecting keyword_end

def reflection
  false ? true : return(false)
end
Run Code Online (Sandbox Code Playgroud)

和括号尝试 syntax error, unexpected tLPAREN, expecting keyword_end

然而

def reflection
  false ? true : (return false)
end
Run Code Online (Sandbox Code Playgroud)

如预期,以及更详细的工作if... ... then... ... else... ...end

def falsy
  if false then true else return false end …
Run Code Online (Sandbox Code Playgroud)

ruby ternary-operator

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

backbone.js的安全性?

我是coffeescript(javascript)世界的新手.目前正在构建我的第一个backbone.js应用程序,该应用程序通过SSL与Rails后端进行通信.

多年来,我多次被告知"JavaScript安全很糟糕,所以尽可能执行所有逻辑服务器端".我已经掌握了服务器端安全性,但客户端呢?

我的一些骨干模型可能包含用户希望保护的信息.

更新1:响应@Nupul,我希望保护元组(integer, string, datetime).没有什么可以危及任何远程系统.

更新2:所以唯一需要注意的是向骨干提供相同的数据,以便在无js的html视图中提供安全性?

javascript security coffeescript backbone.js

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

为什么对于STDOUT而言,IO :: WaitReadable的提升方式与STDERR不同?

鉴于我希望测试从长命令非阻塞读,我创建了下面的脚本,保存为long,使其可执行文件chmod 755,并把它放在我的道路(保存~/bin/long在那里~/bin是我的路径).

我在ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.0]使用RVM默认编译的*nix变体上.我不使用Windows,因此如果你这样做,我不确定测试脚本是否适合你.

#!/usr/bin/env ruby

3.times do
  STDOUT.puts 'message on stdout'
  STDERR.puts 'message on stderr'
  sleep 1
end
Run Code Online (Sandbox Code Playgroud)

为什么long_err生成每条STDERR消息,因为它是由"long"打印的

def long_err( bash_cmd = 'long', maxlen = 4096)
  stdin, stdout, stderr = Open3.popen3(bash_cmd)
  begin
    begin
      puts 'err -> ' + stderr.read_nonblock(maxlen)
    end while true
  rescue IO::WaitReadable
    IO.select([stderr])
    retry
  rescue EOFError
    puts 'EOF'
  end
end
Run Code Online (Sandbox Code Playgroud)

long_out打印所有STDOUT消息之前一直被阻止?

def long_out( bash_cmd = 'long', maxlen = …
Run Code Online (Sandbox Code Playgroud)

ruby io pipe popen

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

太阳黑子空间搜索没有返回结果

我刚刚在我的应用程序中实现了Sunspot gem,我非常喜欢它,除了我在进行位置搜索时似乎排除了一些结果.例如:我住在哥伦比亚俄亥俄州,所以如果我搜索"哥伦布俄亥俄州"我的应用程序将其转换为lat/lng我做:

@search = (Skatepark.search {

  with(:coordinates).near lat, lng, :precision => 3
  fulltext text
  paginate :page => params[:page], :per_page => 15

})
Run Code Online (Sandbox Code Playgroud)

这会返回一些在哥伦布西侧进行地理编码的记录,但不会记录我在我的数据库中位于东侧的记录.我在搜索时做错了什么?

您可以在http://skateparks.co/search上亲自试用

如果你搜索"哥伦布俄亥俄州",你会得到完全不同的结果,如果你搜索"兰卡斯特俄亥俄州",这只是东南部几英里.

ruby-on-rails geohashing ruby-on-rails-3

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

如何使用工头守卫?

鉴于guard-rails gem是一种简单的方法来启动rails服务器并在开发期间自动重新启动它,因为源文件会发生变化;

该gem如何用于在Procfile中启动进程而不是让它运行rails s

我已经找到了foreman gem,它可以读取和启动Procfile中列出的每个进程foreman start.

谢谢!-一个

编辑1

这是一个糟糕的方法.每个过程都应该由警卫单独管理,以便他们可以

  • 独立重启,和
  • 推出友好的开发标志

bdd ruby-on-rails guard

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