繁体   English   中英

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

[英]why does heroku change the order of hashes?

对于我的生活,我无法弄清楚这一点。

如果我在本地开发/生产中有这个:

字段 = {:name => {...}, :description => {...}, :amount => {.... } }

很好,我遍历我的哈希并打印字段名称,就像我声明它的方式一样。

heroku中,打印顺序不同?? 我完全不知道为什么,我也不知道为什么 heroku 以不同的顺序打印它们。

那有意义吗?

编辑:天哪,它让我发疯。 我实际上是在我的模板中执行此操作,对我的变量进行排序,但出于某种奇怪的原因,它仍然以 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 做 |column_name|

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

Hash 中的键顺序不能保证与插入的顺序相同,在 Ruby 1.8

这种行为在 Ruby 1.9 中有所不同,其中保留了顺序。

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

您使用的是 ruby 1.8 吗?

如果您出于某种原因必须使用 Ruby 1.8,那么您可以通过在 Rails ActiveSupport中使用OrderedHash来获得订购的 hash。

要查看您在 Heroku 上使用的堆栈

heroku stack

并迁移到 1.9.2:

heroku stack:migrate bamboo-mri-1.9.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM