草庐IT

ios - -fontWithSize 返回不同的字体对象

全部标签

ruby - 如何使用 ruby​​ fibers 避免阻塞 IO

我需要将目录中的一堆文件上传到S3。由于上传所需的90%以上的时间都花在了等待http请求完成上,所以我想以某种方式同时执行其中的几个。Fibers能帮我解决这个问题吗?它们被描述为解决此类问题的一种方法,但我想不出在http调用阻塞时我可以做任何工作的任何方法。有什么方法可以在没有线程的情况下解决这个问题? 最佳答案 我没有使用1.9中的纤程,但是1.8.6中的常规线程可以解决这个问题。尝试使用队列http://ruby-doc.org/stdlib/libdoc/thread/rdoc/classes/Queue.html查看文

ruby - 如何从 ruby​​ 中的 IO 对象获取文件名

在ruby中...我有一个由外部进程创建的IO对象,我需要从中获取文件名。然而我似乎只能得到文件描述符(3),这对我来说不是很有用。有没有办法从此对象获取文件名甚至获取文件对象?我正在从通知程序中获取IO对象。所以这也可能是获取文件路径的一种方式? 最佳答案 关于howtogetathefilenameinC也有类似的问题,我将在这里以ruby​​的方式给出这个问题的答案。在Linux中获取文件名假设io是您的IO对象。以下代码为您提供了文件名。File.readlink("/proc/self/fd/#{io.fileno}")例

ruby - 为什么我会看到这两个几乎相同的 Ruby 正则表达式模式的不同结果,为什么一个匹配我认为不应该匹配的内容?

使用Ruby1.9.2,我在IRB中有以下Ruby代码:>r1=/^(?=.*[\d])(?=.*[\W]).{8,20}$/i>r2=/^(?=.*\d)(?=.*\W).{8,20}$/i>a=["password","1password","password1","pass1word","password1"]>a.each{|p|puts"r1:#{r1.match(p)?"+":"-"}\"#{p}\"".ljust(25)+"r2:#{r2.match(p)?"+":"-"}\"#{p}\""}这会产生以下输出:r1:-"password"r2:-"password"r1:

ruby - ActiveRecord - 在连接模型中查找具有共享属性的所有对象

我有三个模型classBoat我正在尝试编写一个简单的ActiveRecord查询来查找所有帆船类型的船。类似于Boat.where(classifications:"Sailboat") 最佳答案 我认为这可行:Boat.joins(:classifications).where(classifications:{name:'Sailboat'})#nameorwhateverfieldcontainsSailboat生成此查询:SELECT`boats`.*FROM`boats`INNERJOIN`boat_classifica

ruby-on-rails - Ruby on Rails - 在 ':include =>' 上添加条件以加载有限数量的对象

我有两个模型用户和事件。基数是一个用户有很多事件。当我查询数据库以提供所有用户及其相应事件时,它会返回正确的结果。示例语句:Users.find(:all,:include=>[:events])但是,我需要帮助的是根据条件为用户获取事件。我需要返回的每个用户只获取今天安排的事件(例如:CREATED_DATE=TODAY)。也就是说,我不希望所有事件都与用户关联。也就是说,我仍然需要在数据库中找到的所有用户,但对于今天没有安排事件的一些用户,他们不应该在HashMap中加载事件。有人可以帮我修改“Users.find(:all,:include=>[:events])”Rails语句

ruby - 对 Ruby 对象进行版本控制

我有一系列建模底层XML(如OXM)的Ruby对象。不幸的是,XML正在更改并且相应的版本正在发生变化。我需要更新我的Ruby对象才能处理这两个版本。我想要比我的方法中的大量if/else子句更干净的东西,因为这很可能再次发生。是否有惯用的Ruby方法来处理这个问题?我正在考虑使用基类作为各种“版本化”类的代理,即classXMLModelclassV1#V1specificimplementationendclassV2;#V2specificimplementationenddefinitialize#createanewV?andsetupdelegationtothatspec

ruby-on-rails - ruby 中相同对象值的不同哈希值

我对ruby​​的“散列”方法有疑问:http://apidock.com/ruby/v1_8_7_330/Hash/hash我用它来比较具有相同内容的两个不同对象,以发现数据库对象和具有相同属性的新元素之间的冲突。它显然已经工作了很长时间(超过一年),但突然在我的开发计算机上停止工作了。如果我在Rails控制台中尝试这样做:a={:a=>'a',:b=>'b'}b={:a=>'a',:b=>'b'}a.hashb.hash我在同一控制台中为a.hash和b.hash(-3820017043059270405)获得了相同的值。问题是,如果我换到另一个控制台,它会返回与第一个控制台不同的

ruby - 如何用 YARD 记录一个不返回任何内容的方法

我有这样的方法defself.import(file_name,opts={})我正在尝试用YARD记录下来。然而,这是一种100%副作用的方法(我知道,我知道,副作用,呃!)。但是对于此方法的用户,实际上没有任何类型的返回对象,但是YARD生成如下签名:+(Object)import(file_name,opts={})有什么办法可以告诉yardimport方法什么都不返回吗?我可以告诉它返回nil,但这不是一回事 最佳答案 所有方法都会返回一些东西,void关键字可能就是您要查找的内容。#@return[void]defmeth

ruby - 为什么在 Ruby 中未初始化的实例变量返回 nil,但未初始化的类变量会引发错误?

在Ruby中,为什么未初始化的实例变量返回nil而未初始化的类变量引发NameError?比较:@some_uninitialized_variable#=>nil和:@@some_uninitialized_class_variable#=>NameError 最佳答案 我的看法如下:未初始化的局部变量会返回一个名称错误,因为Ruby不知道它是一个局部变量还是一个不存在的方法。如果未初始化的类变量在未定义时返回nil,当远祖实际为变量分配值nil时,可能会导致严重错误。也就是说,我认为这是在保护编码器。如果一个经常使用的特性,在未

ruby - stub 实例方法在使用 minitest 的第二次调用时返回值不同

我正在对用户的提要进行分页,并想模拟我正在使用的API的响应。API可以返回奇怪的结果,所以我想确保如果API返回我已经看到的项目,请停止分页。我使用minitest在第一次调用方法get_next_page时stub,但我想在第二次和第三次用不同的值调用它时stub。我应该只使用rSpec吗?ruby新手...这是片段test"crawlerdoesnotpaginateifnonewitemsinnextpage"do#1:A,B#2:B,D=>D#3:A=>stopcrawler=CrawlJob.newfirst_page=[{"id"=>"item-A"},{"id"=>"i