标签: ruby

终端或控制台中的就地进度输出

当您运行时git clone,它会更新进度.例如,收到的对象的百分比会发生变化.

user@athena:~/cloj/src$ git clone git://git.boinkor.net/slime.git
Initialized empty Git repository in /home/user/cloj/src/slime/.git/
remote: Counting objects: 15936, done.
remote: Compressing objects: 100% (5500/5500), done.
Receiving objects:  28% (4547/15936), 3.16 MiB | 165 KiB/s
Run Code Online (Sandbox Code Playgroud)

这是如何完成的?它是否使用ncurses或更简单的东西,比如退格字符和常规字符输出的某种组合?

我对如何通过Ruby实现这种控制台输出特别感兴趣.

编辑

我原来的问题得到了回答.但这是一个附录.例如,当您使用MPlayer时,它不仅会更新一行以显示当前进度,还会更新一行(例如,当您按下暂停时).

 =====  PAUSE  =====
A:  79.9 (01:19.9) of 4718.0 ( 1:18:38.0)  0.3% 
Run Code Online (Sandbox Code Playgroud)

您如何在适当的位置更新两行输出?

ruby unix terminal ncurses

32
推荐指数
2
解决办法
8947
查看次数

有没有一种简单的方法来获取Ruby中的图像尺寸?

我正在寻找一种简单的方法来获取Ruby中图像文件的宽度和高度尺寸,而无需使用ImageMagick或ImageScience(运行Snow Leapard).

ruby image dimensions osx-snow-leopard

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

在脚本语言中捕获拼写错误

如果您选择的脚本语言没有类似Perl的严格模式,您如何捕捉错别字?你是否正在测试一切?每个构造函数,每个方法?这是唯一的方法吗?

ruby python scripting groovy unit-testing

32
推荐指数
1
解决办法
3804
查看次数

每6个Rails每个循环插入标记?

我有X个图像对象需要在视图中循环,并且想要每6个对象创建一个新的div(对于一个库).

我看过周期,但它似乎改变了所有其他记录.有没有人知道每6次将代码插入视图的方法?

我可以用嵌套循环来做这件事,但我有点难过这个.

ruby loops ruby-on-rails

32
推荐指数
2
解决办法
2万
查看次数

如何避免在Ruby 1.9中将​​魔术编码注释放在每个UTF-8文件的顶部?

我有一个Rails项目,里面有很多西里尔字符串.

它在Ruby 1.8上运行良好,但Ruby 1.9假定源文件是US-ASCII编码的,除非您# encoding: utf-8在源文件的顶部提供注释.此时不考虑文件US-ASCII.

是否有一种更简单的方法来告诉Ruby"这个应用程序是UTF8编码的.除非另有说明,否则请将所有和任何包含的源文件视为UTF8"?


更新:

我写了" 如何在Ruby 1.9文件中自动插入编码:UTF-8指令 ",如果需要,会自动附加编码指令.

ruby encoding utf-8 ruby-1.9

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

我可以在Ruby中的heredoc中访问变量吗?

如果我有方法

  def some_method p = {}
    string = <<-MY_TERMINATOR
      Example text blah blah
      lorem ipsum something or another
    MY_TERMINATOR
  end
Run Code Online (Sandbox Code Playgroud)

如何从heredoc中访问变量p [:name]?

ruby string heredoc

32
推荐指数
1
解决办法
8497
查看次数

仅在模块中列出方法?

我想知道如何列出模块中的所有方法,但不包括继承的方法.

例如.

module Software
  def exit
    puts "exited"
  end
end

puts Software.methods
Run Code Online (Sandbox Code Playgroud)

将列出不仅退出,而且所有继承的方法.

是否可以列出退出?

谢谢

ruby

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

如何在纯Ruby(没有Rails)中使用Capybara?

我试图让Capybara运行在一个简单的Ruby脚本中 - 即没有/在Rails之外.这是脚本:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

include Capybara

Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'

visit('/')
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行这个时,我收到此错误:

NameError: uninitialized constant Capybara::Session

at top level    in dsl.rb at line 52
method gem_original_require in custom_require.rb at line 36
method require  in custom_require.rb at line 36
at top level    in capybara_test.rb at line 3
method gem_original_require in custom_require.rb at line 31
method require  in custom_require.rb at line 31
at top level    in capybara_test.rb at line 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

更多信息:

  • Mac OS X 10.5 …

ruby testing tdd capybara

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

Ruby中的Magic $ -prefixed变量; 在哪里有完整的参考?

我在Ruby中看过像这样的魔术变量. $_ $' $0

是否有完整的参考资料来说明它们的含义以及它们是如何设定的?

ruby variables

32
推荐指数
1
解决办法
8219
查看次数

处理Ruby线程中引发的异常

我正在寻找一个经典的异常处理问题的解决方案.请考虑以下代码:

def foo(n)
  puts " for #{n}"
  sleep n
  raise "after #{n}"
end

begin
  threads = []
  [5, 15, 20, 3].each do |i|
    threads << Thread.new do
      foo(i)
    end
  end

  threads.each(&:join)      
rescue Exception => e
  puts "EXCEPTION: #{e.inspect}"
  puts "MESSAGE: #{e.message}"
end
Run Code Online (Sandbox Code Playgroud)

此代码在5秒后捕获异常.

但是如果我将数组更改为[15, 5, 20, 3],则上面的代码会在15秒后捕获异常.简而言之,它始终捕获第一个线程中引发的异常.

任何想法,为什么如此.为什么不在每次3秒后捕获异常?如何通过任何线程捕获第一个引发的异常?

ruby multithreading exception-handling

32
推荐指数
2
解决办法
2万
查看次数