标题本身就说明了一切。我只想知道它是否存在,而不是它在哪里。是否有一个衬垫可以实现这一目标? 最佳答案 File.open(filename).grep(/string/)这会将整个文件载入内存(slurps文件)。你应该避免文件slurpingwhendealingwithlargefiles.这意味着一次加载一行,而不是整个文件。File.foreach(filename).grep(/string/)最好自己清理,而不是让垃圾收集器在某个时候处理它。如果您的程序是长期存在的,而不仅仅是一些快速脚本,那么这一点就更为重要。使用代
我正在使用最近添加了UnicodeBOMheader(U+FEFF)的数据提要,现在我的rake任务被它搞砸了。我可以使用file.gets[3..-1]跳过前3个字节,但是是否有更优雅的方式来读取Ruby中的文件,它可以正确处理这个问题,无论BOM是有没有? 最佳答案 在ruby1.9.2中,您可以使用模式r:bom|utf-8text_without_bom=nil#definethevariableoutsidetheblocktokeepthedataFile.open('file.txt',"r:bom|utf-8")
我想用1个元素填充数组5次。到目前为止我得到了什么。number=1234a=[]5.times{a1234,1234,1234,1234,1234它可以工作,但感觉不是ruby的方式。有人可以指出正确的方向来初始化一个具有5倍相同值的数组吗? 最佳答案 对于Fixnums等不可变对象(immutable对象)Array.new(5,1234)#Assignsthegiveninstancetoeachitem#=>[1234,1234,1234,1234,1234]对于像字符串数组这样的可变对象Array.new(5){"Lo
如何将stderr和stdout重定向到Ruby脚本文件? 最佳答案 在Ruby脚本中,您可以使用IO#reopen重定向stdout和stderr方法。#a.rb$stdout.reopen("out.txt","w")$stderr.reopen("err.txt","w")puts'normaloutput'warn'somethingtostderr'$lsa.rb$rubya.rb$lsa.rberr.txtout.txt$caterr.txtsomethingtostderr$catout.txtnormaloutput
我使用Activeadmin作为我的Rails应用程序后端。我想上传文件。我怎样才能完成这个功能? 最佳答案 我找到了一种将Paperclip与ActiveAdmin结合使用的方法。我在模型“事件”中添加了这段代码:has_attached_file:map,:styles=>{:medium=>"238x238>",:thumb=>"100x100>"}我为我的管理模型做了这个:ActiveAdmin.registerEventdoform:html=>{:enctype=>"multipart/form-data"}do|f|f
从以下位置提取filename.jpg的好方法是什么:url='http://www.example.com/foo/bar/filename.jpg?2384973948743'我正在使用Ruby1.9.3。 最佳答案 require'uri'url='http://www.example.com/foo/bar/filename.jpg?2384973948743'uri=URI.parse(url)putsFile.basename(uri.path)#=>filename.jpg
在我的Rails3项目中,我想发送一些简单的通知电子邮件。我不需要为他们制作模板或做任何逻辑。我只是想从系统中的不同位置触发它们。如果我在任意ruby脚本中执行此操作,我会使用pony.但是,我仍想使用Rails邮件设施和配置,以便获得与系统中其余邮件相同的可靠性和设置。最简单的方法是什么?理想情况下会有一些像这样的方法ActionMailer.send(:to=>'foo@example.com',:subject=>"thesubject",:body=>"thisisthebody") 最佳答案 在没有模板的情况下,在Ra
我知道您可以通过键入查看所有可能的佣金任务rake-T但我需要知道任务的具体作用。从输出中,如何找到实际具有任务的源文件?例如,我正在尝试查找db:schema:dump任务的源。 最佳答案 我知道这是一个老问题,但无论如何:rake-W这是在rake0.9.0中引入的。http://rake.rubyforge.org/doc/release_notes/rake-0_9_0_rdoc.htmlSupportforthe–where(-W)flagforshowingwhereataskisdefined.
像我在Googleverse中看到的许多其他人一样,我成为了File.exists?陷阱的受害者,它当然会检查您的本地文件系统,而不是您要部署到的服务器。我发现了一个使用shellhack的结果,例如:if[[-d#{shared_path}/images]];then...但这对我来说不太合适,除非它被很好地包装在Ruby方法中。有没有人优雅地解决了这个问题? 最佳答案 在Capistrano3中,您可以:onroles(:all)doiftest("[-f/path/to/my/file]")#thefileexistselse
我有一个模型Foo有_many'Bar'。对于这些对象中的每一个,我都有一个factory_girl工厂。Bar的工厂与Foo有关联;它会在创建Bar时实例化一个Foo。我想要一个创建包含Bar的Foo的工厂。理想情况下,此Bar将通过:bar工厂创建,并遵守用于创建Foo的构建策略(创建/构建)。我知道我可以直接调用:bar工厂,然后从新的Bar获取Foo引用。我想避免这种情况;在我的测试用例中,重要的对象是Foo;给Bar厂打电话好像有点迂回。此外,我可以看到需要具有多个Bars的Foo。这在factory_girl中可能吗?您如何定义父级中的这种关系?