我一直在寻找一种优雅而有效的方法,将一个字符串块化为Ruby中给定长度的子字符串.
到目前为止,我能想到的最好的是:
def chunk(string, size)
(0..(string.length-1)/size).map{|i|string[i*size,size]}
end
>> chunk("abcdef",3)
=> ["abc", "def"]
>> chunk("abcde",3)
=> ["abc", "de"]
>> chunk("abc",3)
=> ["abc"]
>> chunk("ab",3)
=> ["ab"]
>> chunk("",3)
=> []
Run Code Online (Sandbox Code Playgroud)
您可能想要chunk("", n)返回[""]而不是[].如果是这样,只需将其添加为方法的第一行:
return [""] if string.empty?
Run Code Online (Sandbox Code Playgroud)
你会推荐更好的解决方案吗?
编辑
感谢Jeremy Ruten提供的优雅高效的解决方案:
def chunk(string, size)
string.scan(/.{1,#{size}}/)
end
Run Code Online (Sandbox Code Playgroud) Capistrano食谱中"角色"的目的和功能是什么?当我查看样本食谱时,我经常会看到这样的事情:
role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db, 'somedomain.com', :primary => true
Run Code Online (Sandbox Code Playgroud)
所以看起来角色基本上是Capistrano执行命令的服务器.如果是这种情况,那为什么它会被称为"角色"而不是"主机"或"服务器"?
在上面的例子中,角色:app和:web角色之间有什么区别?
该:primary => true选项有什么作用?
我疯了:因子的Ruby函数在哪里?不,我不需要教程实现,我只想要库中的函数.这不是数学!
我开始怀疑,这是一个标准的库函数吗?
我知道它是ActiveRecord的替代品,它使用对象而不是查询.
但...
为什么这样更好?
对象/查询会"更容易"创建吗?
它会导致更高效的SQL查询吗?
它会与所有主要数据库兼容吗? - 我认为它会.
使用存储过程会更容易/更难吗?
我有以下代码:
@posts = Post.joins(:user).joins(:blog).select
Run Code Online (Sandbox Code Playgroud)
这是为了查找所有帖子并返回它们以及相关的用户和博客.但是,用户是可选的,这意味着INNER JOIN该:joins生成没有返回大量记录.
我如何使用它来生成一个LEFT OUTER JOIN?
我的模型有一些RSpec测试,我想打开SQL ActiveRecord日志,就像我在Rails服务器模式中看到的那样.怎么做?
我开始测试了
RAILS_ENV=test bundle exec rspec my/test_spec.rb
Run Code Online (Sandbox Code Playgroud)
谢谢
在运行应用程序时,如何通过电子邮件地址选择用户,然后在rails consoleDevise中手动设置密码?
另外,在使用Devise时,我将在哪里查看文档以涵盖有关操作帐户的更多详细信息?
我在Rails 3上使用Paperclip(带有Amazon s3).我想删除现有附件而不使用更新操作替换它.
我只发现了这样的一个实例在这里,不能得到那个工作,它只是不会删除,并没有什么在日志中说为什么.我想在表单上做这样的事情:
<%- unless @page.new_record? || !@page.image? -%>
<%= f.check_box :image_delete, :label => 'Delete Image' %>
<%- end -%>
Run Code Online (Sandbox Code Playgroud)
(页面是模型的名称,image是保存附件的属性名称)
但是,如何检测该复选框,更重要的是,如何删除图像?我感谢任何帮助!
我开始使用Ruby on Rails.我目前正在阅读一个教程,其中说我必须从IRB运行.rb文件,这将在我当前目录中创建一个.xml文件.
我的问题是如何在IRB中运行.rb文件?
当我在IRB中运行它时,我是否必须在此.rb文件所在的目录中?
我尝试了以下操作:只需irb在文件目录中的命令行上输入.据我所知,这开始了IRB会议.
然后我键入了irb "filename.rb"哪个经过但没有在当前目录中创建任何内容,但至少它没有给出任何错误.
我还尝试了一大堆其他明显错误的东西.因此,我认为我自己无法解决这个问题,谷歌搜索这个问题根本没有帮助.
我正在运行Leopard.
ruby ×10
activerecord ×3
arel ×1
capistrano ×1
chunking ×1
devise ×1
factorial ×1
irb ×1
math ×1
methods ×1
paperclip ×1
rspec-rails ×1
string ×1