我想沉默一个特定的Rubocop警告:
Assignment Branch Condition size for plot_defaults is too high. [21.05/15]
在注释行的代码中执行此操作的适当语法是什么,如:
# rubocop: disable <???>
我使用popen3得到了意想不到的行为,我想用它来运行像工具ala这样的命令cmd < file1 > file2.以下示例挂起,因此stdout done永远不会到达.使用其他cat可能导致悬挂的工具,从而stdin done永远不会达到.我怀疑,我正在缓冲,但我该如何解决这个问题呢?
#!/usr/bin/env ruby
require 'open3'
Open3.popen3("cat") do |stdin, stdout, stderr, wait_thr|
stdin.puts "foobar"
puts "stdin done"
stdout.each_line { |line| puts line }
puts "stdout done"
puts wait_thr.value
end
puts "all done"
Run Code Online (Sandbox Code Playgroud) 我想将一个txt文件拆分成多个文件,其中每个文件包含不超过5Mb.我知道有这方面的工具,但我需要这个项目,并希望在Ruby中做到这一点.另外,如果可能的话,我更喜欢在块上下文中使用File.open执行此操作,但我失败了:o(
#!/usr/bin/env ruby
require 'pp'
MAX_BYTES = 5_000_000
file_num = 0
bytes = 0
File.open("test.txt", 'r') do |data_in|
File.open("#{file_num}.txt", 'w') do |data_out|
data_in.each_line do |line|
data_out.puts line
bytes += line.length
if bytes > MAX_BYTES
bytes = 0
file_num += 1
# next file
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
这项工作,但我认为它不优雅.此外,我仍然想知道是否可以在块上下文中使用File.open完成.
#!/usr/bin/env ruby
require 'pp'
MAX_BYTES = 5_000_000
file_num = 0
bytes = 0
File.open("test.txt", 'r') do |data_in|
data_out = File.open("#{file_num}.txt", 'w')
data_in.each_line do |line|
data_out = File.open("#{file_num}.txt", 'w') unless data_out.respond_to? :write
data_out.puts …Run Code Online (Sandbox Code Playgroud) 我试图让这个Ruby内联C代码http://pastie.org/2825882工作.代码在vanilla C中运行,但在这里我得到错误和警告.是什么导致这个错误?
./backtrack_inline.rb:67: error: lvalue required as unary '&' operand
Run Code Online (Sandbox Code Playgroud)
另外,为什么我会收到以下错误?
./backtrack_inline.rb:73: error: too few arguments to function 'backtrack'
Run Code Online (Sandbox Code Playgroud)
检查生成的C代码(http://pastie.org/2826036)我没有看到参数有什么问题.但我也收到以下警告:
./backtrack_inline.rb:73: warning: passing argument 1 of 'backtrack' makes integer from pointer without a cast
./backtrack_inline.rb:73: warning: passing argument 2 of 'backtrack' makes integer from pointer without a cast
./backtrack_inline.rb:73: warning: passing argument 3 of 'backtrack' makes integer from pointer without a cast
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种使用<div>标题中提到的嵌套来呈现JSON树的方法.以下是数据示例(树中最多有8个级别):
{
"children": {
"Bacteria": {
"children":{
"Verrucomicrobia":{
"children":{
"Methylacidiphilae":{
"children":{
"Methylacidiphilales":{
"children":{},
"count":2,
"level":"order",
"name":"Methylacidiphilales",
"score":1.46
}
},
"count":2,
"level":"class",
"name":"Methylacidiphilae",
"score":1.46
}
},
"count":2,
"level":"phylum",
"name":"Verrucomicrobia",
"score":1.46
}
},
"count":2,
"level":"kingdom",
"name":"Bacteria",
"score":1.46
}
},
"count":0,
"level":"root",
"name":"Root",
"score":0.0
}
Run Code Online (Sandbox Code Playgroud)
我可以获取/解析JSON树并将其保存到变量中.现在我需要以递归方式遍历树并且:
div节点并添加到新树.但是怎么样?
使用NArray,是否有一些很好的方法来创建值低于例如5的数组掩码,但仅用于锚定左侧或右侧的值的运行,例如这个1-D数组:
[3, 4, 5, 7, 1, 7, 8]
Run Code Online (Sandbox Code Playgroud)
会导致:
[1, 1, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
而这个2-D阵列:
[[2, 4, 5, 7, 1, 2, 3],
[3, 4, 5, 7, 1, 7, 8],
[8, 1, 1, 7, 1, 7, 1]]
Run Code Online (Sandbox Code Playgroud)
会导致:
[[1, 1, 0, 0, 1, 1, 1],
[1, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1]]
Run Code Online (Sandbox Code Playgroud) 我更喜欢使用哈希爆炸行来调用Ruby脚本,使用#!/bin/env ruby它可以让我使用本地Ruby安装而不与系统Ruby安装冲突。但是如何在Linux系统上启用警告?我的测试脚本:
#!/usr/bin/env ruby -w
FOO
Run Code Online (Sandbox Code Playgroud)
在Mac上,我得到:
maasha@mel:~$ ./test.rb
./test.rb:3: warning: possibly useless use of a constant in void context
./test.rb:3:in `<main>': uninitialized constant FOO (NameError)
Run Code Online (Sandbox Code Playgroud)
在Linux上,我得到:
maasha@orsted:~$ ./test.rb
/usr/bin/env: ruby -w: No such file or directory
Run Code Online (Sandbox Code Playgroud) 我试图在一些Ubuntu服务器上安装RubyInline:
sudo gem1.9.1 install RubyInline
ERROR: Error installing RubyInline:
ZenTest requires RubyGems version ~> 1.8
sudo ruby --version
ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux]
Run Code Online (Sandbox Code Playgroud)
这个错误的原因是什么?我对1.8引用感到困惑.这应该都是Ruby1.9.1.怎么解决这个?