小编Pas*_*cke的帖子

Ruby中的数组切片:不合逻辑行为的解释(取自Rubykoans.com)

我正在参加Ruby Koans的练习,我发现以下我发现真的无法解释的Ruby怪癖:

array = [:peanut, :butter, :and, :jelly]

array[0]     #=> :peanut    #OK!
array[0,1]   #=> [:peanut]  #OK!
array[0,2]   #=> [:peanut, :butter]  #OK!
array[0,0]   #=> []    #OK!
array[2]     #=> :and  #OK!
array[2,2]   #=> [:and, :jelly]  #OK!
array[2,20]  #=> [:and, :jelly]  #OK!
array[4]     #=> nil  #OK!
array[4,0]   #=> []   #HUH??  Why's that?
array[4,100] #=> []   #Still HUH, but consistent with previous one
array[5]     #=> nil  #consistent with array[4] #=> nil  
array[5,0]   #=> nil  #WOW.  Now I don't understand anything anymore...
Run Code Online (Sandbox Code Playgroud)

那么为什么 …

ruby arrays

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

如何有选择地静音Rails 3弃用警告?

我正在升级Rails 2到Rails 3应用程序(代码不是由我编写的).(经过良好测试的代码)使用shoulda和Test :: Unit,并广泛使用宏should_create和should_change.

我从这个讨论中了解到,shoulda维护者希望摆脱这两种方法,但使用Test :: Unit的人并不觉得有必要(不确定我是否正在抓住整个讨论).

Anaway,有没有办法选择性地转换指定宏的弃用警告?我已经从这篇文章中了解到,您可以通过设置完全关闭Rake测试输出中的弃用警告:

ActiveSupport::Deprecation.silenced = true
Run Code Online (Sandbox Code Playgroud)

在您的测试环境文件中,我也知道您可以将特定的代码块放在一个块中以使它们静音:

ActiveSupport::Deprecation.silence do
# no warnings for any use of deprecated methods here
end
Run Code Online (Sandbox Code Playgroud)

后者是一个选项,但需要我遍历所有测试并将should_create宏包含在这样的块中.所以我想知道有一种方法可以完全消除特定宏的警告,只需一个配置设置?

configuration unit-testing ruby-on-rails shoulda deprecated

10
推荐指数
2
解决办法
3340
查看次数

如何让Rails将发布的字符串解析为json而不发送'Content-type:application/json'标题?

当发送标题'Content-type:application/json'时,Rails会在几个级别更改行为:

  • 提交的帖子正文被解析为json而不仅仅是一个字符串参数
  • wrap_parameters:format => [:json]在config/initializers/wrap_parameters.rb中用于解析发布的提到的参数(因此你可以发送带或不带根元素的json)

如果我不能信任(外部)客户端传递正确的标题怎么办?换句话说,我希望我的应用程序的行为好像客户端总是传递'Content-type:application/json'标头,即使客户端实际上没有?

rest json ruby-on-rails content-negotiation ruby-on-rails-3

6
推荐指数
1
解决办法
773
查看次数

Ruby on Rails测试(flash msgs和views)和I18N的最佳实践

在测试Flash消息和生成的视图时,是否应该使用一种语言测试生成的输出:

should_set_the_flash_to /Hello/i
Run Code Online (Sandbox Code Playgroud)

或者你应该把I18N带入你的测试中:

should_set_the_flash_to I18n.t("sign_up.welcome")
Run Code Online (Sandbox Code Playgroud)

可能是我的问题不是正确的问题...如果已经有很好的解释结合测试和i18n,请随意回答链接...

更新:在Arsen7的回答之后输入正确的国际化代码,thx Arsen7!

testing ruby-on-rails internationalization

4
推荐指数
1
解决办法
1552
查看次数