为什么heroku改变了哈希的顺序?

时间:2011-04-30 07:10:31

标签: ruby-on-rails heroku hash

对于我的生活我无法理解这一点。

如果我在我的本地开发/制作中有这个:

fields = {:name => {...},:description => {...},:amount => {....}}

它很好我循环我的哈希并打印字段名称就像我宣布的那样。

在heroku中,序列的打印顺序不同?我完全不知道为什么,我无法弄清楚为什么heroku以不同的顺序打印它们。

这有意义吗?

编辑:OMG让我疯狂。我实际上是在我的模板中进行此操作,对我的变量进行排序但是对于一些非常奇怪的原因,它仍然以heroku只能理解的方式出现。

- @form_columns = @form_columns.sort_by do |i| 
  - if i[1][:rank].nil?
    - i[1][:rank] = rank
  - i[1][:rank]  
  - rank = rank + 1 

这就是我顺便循环的方式:

  • @ form_columns.each do | column_name |

请理解我的本地生产/开发服务器没有问题。

2 个答案:

答案 0 :(得分:2)

Hash中的键的顺序不能保证等于插入的顺序,在Ruby 1.8中

在Ruby 1.9中,这种行为是不同的,其中保留了订单。

http://www.igvita.com/2009/02/04/ruby-19-internals-ordered-hash/

您使用的是ruby 1.8吗?

答案 1 :(得分:2)

如果由于某种原因必须使用Ruby 1.8,那么您可以在Rails OrderedHash中使用ActiveSupport获取有序哈希。

要查看您在Heroku上使用的stack

heroku stack

并迁移到1.9.2:

heroku stack:migrate bamboo-mri-1.9.2