最近,我突然产生了可怕的想法Integer.count在Ruby中,从循环开始0,去n-1,同时与Facebook的工程困惑的播放.我做了一个肮脏的修复,在开头添加一个块变量,以便它从一个开始.
有更漂亮的方式吗?
例:
10.times do |n|
n += 1
puts n
end #=> 012345789
Run Code Online (Sandbox Code Playgroud) 如果我arr = [1, 2, 3, 4]知道我可以做以下事情......
> arr.each_slice(2) { |a, b| puts "#{a}, #{b}" }
1, 2
3, 4
Run Code Online (Sandbox Code Playgroud)
...和...
> arr.each_with_index { |x, i| puts "#{i} - #{x}" }
0 - 1
1 - 2
2 - 3
3 - 4
Run Code Online (Sandbox Code Playgroud)
......但是有没有内置的方法来做到这一点?
> arr.each_slice_with_index(2) { |i, a, b| puts "#{i} - #{a}, #{b}" }
0 - 1, 2
2 - 3, 4
Run Code Online (Sandbox Code Playgroud)
我知道我可以构建自己的并将其粘贴到数组方法中.只是想看看是否有内置功能来做到这一点.
我正在Ubuntu 11上学习RoR.当我尝试生成应用程序时收到以下消息.我安装错误了吗?
$ rails generate controller Pages home contact
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.12/lib/bundler/shared_helpers.rb:3.
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.12/lib/bundler/source.rb:162.
NOTE: Gem::SourceIndex#each is deprecated with no replacement. It will be removed on or after 2011-11-01.
Gem::SourceIndex#each called from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.12/lib/bundler/source.rb:162.
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called …Run Code Online (Sandbox Code Playgroud) 我正在使用Ruby on Rails 3.0.7,我计划使用部分模板.我的应用程序中的所有类都将使用相同的部分,因此我必须决定在哪里找到所有这些部分.
将"全局"共享部分模板放在lib文件夹中是一个好主意吗?如果不是,选择文件夹的常用做法是什么?有关如何正确命名和加载该文件夹的任何建议?
找出ruby对象暴露的方法/属性的简单方法是什么?
作为获取字符串成员信息的示例,您可以在PowerShell中执行此操作
"" | get-member
Run Code Online (Sandbox Code Playgroud)
在Python中,
dir("")
Run Code Online (Sandbox Code Playgroud)
有没有这么简单的方法来发现Ruby对象的成员信息?
在我的Rails 3项目中,我想发送一些简单的通知电子邮件.我不需要为它们制作模板或做任何逻辑.我只是想从系统的各个地方解雇他们.
如果我在任意ruby脚本中这样做,我会使用小马.但是,我仍然希望使用rails邮件工具和配置,这样我就能获得与系统中其余邮件相同的可靠性和设置.
最简单的方法是什么?理想情况下会有一些方法
ActionMailer.send(:to => 'foo@example.com', :subject =>"the subject", :body =>"this is the body")
Run Code Online (Sandbox Code Playgroud) 如何用Ruby覆盖Unix shell中以前打印的行?
假设我想每秒在shell上输出当前时间,但不是每次都将字符串堆叠起来,而是想覆盖之前显示的时间.
我一直在阅读所有与UTF-8相关的问题和博客文章,我在test.rb文件中有以下示例:
# encoding: UTF-8
File.open("test.txt", "w") do |f|
f.write "test © foo"
end
File.open("test.txt", "r") do |f|
puts f.read
end
Run Code Online (Sandbox Code Playgroud)
这很完美.在文件中正确生成©符号,它将©读回我并将其打印在屏幕上.
但是当我在实际项目中使用相同的代码时,我将其写入文件而不是©符号: \u00A9
FWIW:我在对我的代码运行rspec(v1.2.9)测试时得到了这个结果.规范生成一个带有©符号的文件,然后重新读取文件以检查内容.
我目前正在Ruby 1.9.2中运行它,但我还需要支持一直回到Ruby 1.8.6.这是一个使用RubyInstaller.org版本的Ruby的Windows环境.
我正在开始为rails 3.0.8应用程序创建测试套件的规划阶段.我正在尝试决定使用哪种测试框架/宝石.通常我更喜欢尽可能坚持Rails惯例.但是,这意味着使用TestUnit.有许多竞争的测试框架可供选择,它们是作为TestUnit的替代品而创建的.多年来TestUnit变得更好了,还是不是一个很好的竞争者?
我也听说过很多关于rspec的好东西.rspec和TestUnit在功能方面是否接近,或者rspec是否将TestUnit从水中吹走?
无论我选择哪种框架,我都希望它拥有良好的支持基础(大量用户和文档),易用性/简单性和持久的未来.