Rails 各位大神,谁知道 [:xxx] 是什么语法?

comfanworld · 2017年08月18日 · 最后由 eddie 回复于 2017年08月19日 · 1941 次阅读

如题,我的环境是ruby2.4.1 rails 5.1.3 使用阿里云 oss 时读取配置遇到问题,按照 sdk 无法读取到配置

阿里 oss 建议

阿里SDK建议

而我使用建议中的方法却读不出来值

aliyun_oss返回了`:endpoint 等,尝试用 [:endpoint] 读取,竟然成功了。

rails console读取 我的secrets.yml

secrets.yml配置

求各位大神帮我解答疑惑,万分感谢!

这个要看 aliyun 的代码了,现在有了 freeze string literal 特性,不需要为了性能强制用 symbol 做 Hash key

Hash 是 key 跟 value 的配對組合,在 Ruby 如果想要取用 Hash 裡的 value 必須要使用正確的 key 才能取用,拿不正確的 key 是拿不到東西的。hash["key"]hash[:key] 是不同的 key,前面那個 key 是 String,後面那個 key 是 Symbol。

關於 Ruby 的 Hash,可參考拙作:

http://railsbook.tw/chapters/06-ruby-basic-2.html#hash_class

如果想了解什麼是 Symbol,可參考:

http://railsbook.tw/chapters/06-ruby-basic-2.html#symbol_class

需要 登录 后方可回复, 如果你还没有账号请 注册新账号