标签: ruby

在Ruby中将字符串切割成给定长度的块的最佳方法是什么?

我一直在寻找一种优雅而有效的方法,将一个字符串块化为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)

ruby string chunking

85
推荐指数
5
解决办法
3万
查看次数

卡皮斯特拉诺的"角色"究竟是什么?

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 capistrano ruby-on-rails

85
推荐指数
1
解决办法
3万
查看次数

Ruby因子函数

我疯了:因子的Ruby函数在哪里?不,我不需要教程实现,我只想要库中的函数.这不是数学!

我开始怀疑,这是一个标准的库函数吗?

ruby math factorial

85
推荐指数
10
解决办法
6万
查看次数

究竟什么是Rails 3.0中的Arel?

我知道它是ActiveRecord的替代品,它使用对象而不是查询.

但...

为什么这样更好?

对象/查询会"更容易"创建吗?

它会导致更高效的SQL查询吗?

它会与所有主要数据库兼容吗? - 我认为它会.

使用存储过程会更容易/更难吗?

ruby activerecord ruby-on-rails arel

85
推荐指数
2
解决办法
2万
查看次数

LEFT OUTER加入Rails 3

我有以下代码:

@posts = Post.joins(:user).joins(:blog).select
Run Code Online (Sandbox Code Playgroud)

这是为了查找所有帖子并返回它们以及相关的用户和博客.但是,用户是可选的,这意味着INNER JOIN:joins生成没有返回大量记录.

我如何使用它来生成一个LEFT OUTER JOIN

ruby activerecord ruby-on-rails

85
推荐指数
6
解决办法
6万
查看次数

如何在RSpec测试中打开ActiveRecord的SQL调试日志记录?

我的模型有一些RSpec测试,我想打开SQL ActiveRecord日志,就像我在Rails服务器模式中看到的那样.怎么做?

我开始测试了

RAILS_ENV=test bundle exec rspec my/test_spec.rb
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby activerecord ruby-on-rails rspec-rails

85
推荐指数
4
解决办法
6万
查看次数

从Rails控制台设置密码重置

在运行应用程序时,如何通过电子邮件地址选择用户,然后在rails consoleDevise中手动设置密码?

另外,在使用Devise时,我将在哪里查看文档以涵盖有关操作帐户的更多详细信息?

ruby ruby-on-rails rails-console devise ruby-on-rails-3

85
推荐指数
4
解决办法
6万
查看次数

Rails Paperclip如何删除附件?

我在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 ruby-on-rails paperclip

84
推荐指数
4
解决办法
5万
查看次数

是否可以在方法内部使用方法?

我在方法中有一个方法.内部方法依赖于正在运行的变量循环.这是个坏主意吗?

ruby methods

84
推荐指数
3
解决办法
4万
查看次数

如何从IRB运行.rb文件?

我开始使用Ruby on Rails.我目前正在阅读一个教程,其中说我必须从IRB运行.rb文件,这将在我当前目录中创建一个.xml文件.

我的问题是如何在IRB中运行.rb文件?
当我在IRB中运行它时,我是否必须在此.rb文件所在的目录中?

我尝试了以下操作:只需irb在文件目录中的命令行上输入.据我所知,这开始了IRB会议.
然后我键入了irb "filename.rb"哪个经过但没有在当前目录中创建任何内容,但至少它没有给出任何错误.

我还尝试了一大堆其他明显错误的东西.因此,我认为我自己无法解决这个问题,谷歌搜索这个问题根本没有帮助.

我正在运行Leopard.

ruby ruby-on-rails irb

84
推荐指数
2
解决办法
6万
查看次数