草庐IT

ruby-on-rails - 如何使用 Paperclip 以编程方式设置文件上传

我有一个rake任务,使用fakergem为应用程序播种随机数据。但是,我们也有要在此rake任务中上传的图像(如Logo)。我们已经设置了Paperclip,但无法在rake任务中以编程方式上传它们。有什么想法吗? 最佳答案 程序化是什么意思?您可以设置一个方法,该方法将采用以下行的文件路径my_model_instance=MyModel.newfile=File.open(file_path)my_model_instance.attachment=filefile.closemy_model_instance.save!#a

ruby 以四人为一组处理数组元素

当每个元素都需要处理时,我有一个ruby​​脚本数组:threads=[]elemets.eachdo|element|threads.push(Thread.new{process(element)}}endthreads.each{|aThread|aThread.join}由于资源限制,如果一次不再处理四个元素,脚本将以最佳方式运行。不,我知道我可以转储每个循环并使用一个变量来计算4个元素,然后等待但是有没有更酷的ruby​​方法来做到这一点? 最佳答案 您可以以4为一组枚举数组:>>[1,2,3,4,5,6,7,8,9,10

ruby - 如何在 Ruby 中以毫秒为单位计时操作?

我想计算出特定函数使用了多少毫秒。所以我四处寻找,但找不到以毫秒精度在Ruby中获取时间的方法。你是怎么做到的?在大多数编程语言中,它就像start=now.millisecondsmyfunction()end=now.millisecondstime=end-start 最佳答案 您可以使用ruby的Time类。例如:t1=Time.now#processing...t2=Time.nowdelta=t2-t1#inseconds现在,delta是一个float对象,您可以获得类将提供的尽可能精细的结果。

ruby - 检查两个数组是否具有相同的内容(以任何顺序)

我将Ruby1.8.6与Rails1.2.3结合使用,需要确定两个数组是否具有相同的元素,无论它们的顺序是否相同。其中一个数组保证不包含重复项(另一个可能,在这种情况下答案是否定的)。我的第一个想法是require'set'a.to_set==b.to_set但我想知道是否有更有效或更惯用的方法。 最佳答案 这不需要转换来设置:a.sort==b.sort 关于ruby-检查两个数组是否具有相同的内容(以任何顺序),我们在StackOverflow上找到一个类似的问题:

ruby - 以 DRY 方式将多个错误类传递给 ruby​​ 的救援子句

我有一些代码需要在ruby​​中拯救多种类型的异常:begina=randifa>0.5raiseFooExceptionelseraiseBarExceptionendrescueFooException,BarExceptionputs"rescued!"end我想做的是以某种方式将我想要拯救的异常类型列表存储在某处并将这些类型传递给救援子句:EXCEPTIONS=[FooException,BarException]然后:rescueEXCEPTIONS这是否可能,如果不对eval进行一些真正的hack-y调用,这是否可能?考虑到我在尝试上述操作时看到TypeError:clas

ruby - 在 Ruby 中如何查找一个字符串是否以另一个字符串开头?

在Ruby(没有rails)中查找字符串是否以另一个字符串开头的最佳方法是什么? 最佳答案 puts'abcdefg'.start_with?('abc')#=>true[edit]这是我在这个问题之前不知道的事情:start_withtakesmultiplearguments.'abcdefg'.start_with?('xyz','opq','ab') 关于ruby-在Ruby中如何查找一个字符串是否以另一个字符串开头?,我们在StackOverflow上找到一个类似的问题:

Ruby:如何迭代一个范围,但以设定的增量进行?

所以我像这样遍历一个范围:(1..100).eachdo|n|#n=1#n=2#n=3#n=4#n=5end但我想做的是以10为单位进行迭代。因此,不是将n增加1,下一个n实际上是10,然后是20、30,等等。 最佳答案 参见http://ruby-doc.org/core/classes/Range.html#M000695获取完整的API。基本上您使用step()方法。例如:(10..100).step(10)do|n|#n=10#n=20#n=30#...end 关于Ruby:如何

ruby - 如何全局配置 RSpec 以保持 '--color' 和 '--format specdoc' 选项打开

如何在Ubuntu中设置RSpec的全局配置。特别是,--color和--formatspecdoc在我的所有项目中保持打开状态(即每次我在任何地方运行rspec时)。 最佳答案 正如您在文档中看到的那样here,预期用途是创建~/.rspec并在其中放置您的选项,例如--color。要使用--color选项快速创建一个~/.rspec文件,只需运行:echo'--color'>>~/.rspec 关于ruby-如何全局配置RSpec以保持'--color'和'--formatspecd

ruby-on-rails - 等效于哈希的 .try() 以避免 "undefined method"错误?

这个问题在这里已经有了答案:HowtoavoidNoMethodErrorfornilelementswhenaccessingnestedhashes?[duplicate](4个答案)关闭7年前。在Rails中,如果值不存在,我们可以执行以下操作以避免错误:@myvar=@comment.try(:body)当我深入挖掘哈希并且不想出错时,有什么等价物?@myvar=session[:comments][@comment.id]["temp_value"]#[:comments]mayormaynotexisthere在上述情况下,session[:comments]try[@co

ruby - 如何在 Ruby 中将一个数组添加到另一个数组而不以多维结果结束?

我试过:somearray=["some","thing"]anotherarray=["another","thing"]somearray.push(anotherarray.flatten!)我以为["some","thing","another","thing"]但是得到了["some","thing",nil] 最佳答案 你有一个可行的想法,但是#flatten!放错了地方——它压扁了它的接收器,所以你可以用它来转动[1,2,['foo','bar']]到[1,2,'foo','bar']。我无疑忘记了一些方法,但你可以连