草庐IT

控制循环

全部标签

ruby - 用 Ruby 控制 Tor 客户端

我正在写一个自动抓取网站进行数据分析的Ruby脚本,现在我有一个相当复杂的需求:我必须能够模拟来自多个国家的访问,大约20个不同的国家。该网站将根据IP位置包含不同的信息,因此完成它的唯一方法是从实际位于该国家/地区的服务器请求它。因为我不想在这20个国家/地区中的每一个国家/地区都购买服务器,所以我选择尝试一下Tor-正如你们中的许多人所知,通过编辑torrc配置文件,可以指定导出节点,因此实际请求将来自的国家/地区。当我手动执行此操作时,例如通过编辑torrc文件以使用阿根廷服务器,然后使用Vidalia断开Tor,重新连接Vidalia,然后重新运行请求,它工作正常。但是,我想完

ruby - 在 Ruby 中,如何控制 Test::Unit 测试的运行顺序?

例如,当运行这些测试时,我想确保test_fizz总是先运行。require'test/unit'classFooTest更新:我为什么要这样做?我的想法是,某些测试(那些测试更简单、更基本的方法)的早期失败将使跟踪系统中的问题变得更容易。例如,bar的成功取决于fizz是否正常工作。如果fizz坏了,我想马上知道,因为没有必要担心bar,它也会失败,但输出要复杂得多测试结果。 最佳答案 您可以使用Test::Unit::TestCase#test_order=:defined定义测试顺序例子:gem'test-unit'#Iuse

ruby - Jekyll 存档页面中的嵌套液体循环不起作用。在内部条件中使用外部循环变量

我正在使用jekyllstaticsitebuilder,我有难以执行以下操作:{%forcategoryinsite.categories%}{{category[0]}}{%forpostinsite.categories[{{category}}]%}{{post.title}}{%endfor%}↩{%endfor%}我的jekyll站点中有一个名为“测试”的帖子类别,我可以使用以下内容显示来自它的帖子:{%forpostinsite.categories.test%}{{post.title}}{%endfor%}但是,我想自动构建一个存档页面,并按顺序为此,我需要

ruby - 在 Ruby 中循环的首选方式是什么?

为什么each循环优于Ruby中的for循环?时间复杂度是否存在差异,或者它们只是语法上的不同? 最佳答案 是的,这是两种不同的迭代方式,但希望这个计算对您有所帮助。require'benchmark'a=Array(1..100000000)sum=0Benchmark.realtime{a.each{|x|sum+=x}}这需要5.866932秒a=Array(1..100000000)sum=0Benchmark.realtime{forxinasum+=xend}这需要6.146521秒。虽然这不是进行基准测试的正确方法,但

ruby-on-rails - 有没有办法在 Ruby on Rails 的控制台中检查命令的性能?

我找不到任何关于这是否可能的信息,但它会很有用及时思考。例如,我试图找出其中哪一个更快:[val2,val3,val4,val5,val6].find{|x|x!=val1}[val2,val3,val4,val5,val6].all?{|x|x==val1}有这样的东西吗?[val2,val3,val4,val5,val6].find{|x|x!=val1}.performance 最佳答案 有!而且您甚至不需要Rails。查看benchmark来自标准库。作为示例:require'benchmark'putsBenchmark.

ruby-on-rails - 如何在 Rails 控制台中将数组的每个元素打印在各自的行中?

当我运行Rails控制台时,如何在单独的行中显示每个项目?而不是>Post.all=>#,#它会显示为>Post.all=>#,#类似于Perl调试器中的x。我试过了Post.all.each{|e|e.inspect+"\n"}但这只会让事情变得更糟,而且不是很方便。我看到了RubyonRails:prettyprintforvariable.hash_set.inspect...isthereawaytoprettyprint.inpsectintheconsole?和https://github.com/michaeldv/awesome_print但这似乎行不通irb(main

ruby - sleep() 对于作业调度应用程序的主循环来说是个好主意吗

我正在为我的工作用Ruby编写一个作业调度应用程序(主要是为了以给定的频率使用各种协议(protocol)移动文件)我的主循环是这样的:whiletruedo#somecodetolaunchtheproperjobsleepCONFIG["interval"]end它的工作就像一个魅力,但我不确定它是否足够安全,因为该应用程序可能在运行cpu密集型软件的服务器上运行。是否有另一种方法可以做同样的事情,或者sleep()对我来说是否足够安全? 最佳答案 每当我觉得需要阻塞时,我都会使用事件循环;通常是libev。这是一个Ruby绑定

Ruby 堆栈级别太深异常不是来自递归无限循环

编辑:(已解决)实际上它可能是因为无限循环而引发的我正在编码,在添加一个方法后我得到了这个:user_name@the_computer:/media/ECC3-C3B0/Prog/mts/src/mts$raketest--trace**Invoketest(first_time)**Executetest/home/user_name/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:stackleveltoodeep(SystemStackError)rakeabo

ruby-on-rails - 在 Rails 控制台启动时运行命令

有没有办法在Rails控制台启动时运行特定命令?我希望它能以大写字母打印出我是连接到远程数据库还是本地数据库!我不介意编写自定义方法来确定-我只是问如何写入控制台。我以前在那里看到过错误和警报。例如:railsc打印出Loadingdevelopmentenvironment(Rails3.2.11)**使用远程数据库**1.9.3p125:001> 最佳答案 您可以在irb配置文件中编写ruby代码。编辑.irbrc文件并添加用于确定您是连接到本地还是远程的ruby​​代码ifdefined?Rails//rubycodetofi

ruby - 如何获取注入(inject)循环的每个值

我想获取inject的每个值。例如[1,2,3].inject(3){|sum,num|sum+num}返回9,我想获取循环的所有值。我尝试了[1,2,3].inject(3).map{|sum,num|sum+num},但没有成功。我写的代码是这样的,但是我觉得是多余的。a=[1,2,3]result=[]a.inject(3)do|sum,num|v=sum+numresult[4,6,9]有没有办法同时使用inject和map? 最佳答案 使用专用的Eumerator非常适合这里,但我会为此展示更通用的方法:[1,2,3].i