質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

3283閲覧

yamlのデータを取得すると配列になってしまう

no1knows

総合スコア3365

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

0クリップ

投稿2019/05/28 02:33

編集2019/05/28 03:11

前提・実現したいこと

yamlデータをハッシュとして読み込み、キーで値を取得したいです。

発生している問題・エラーメッセージ

yamlデータを読み込むと配列として取得してしまっているため、キーで値を取得できず「no implicit conversion of String into Integer」が表示されてしまいます。

Ruby

1 require 'yaml' 2 yaml = YAML.load_file("./config/pwd.yml") 3 4 logger.debug(yaml) # [{27=>"\xFD\x18\xFD・・・"}, {28=>"<\xEE9\xBF\xB7・・・"},・・・}] ※配列になってしまう 5 logger.debug(yaml["28"]) # no implicit conversion of String into Integer

Ruby

1#hashデータ 2--- 3- 27: !binary |- 4 /Rj9APYPXa49U9GozrFWe61YIhxizw/e8XbAhXzF9Qo= 5- 28: !binary |- 6 PO45v7cG6ZNolXikftTXeTgO27m0JC9I4boaUSzduZs= 7- 29: !binary |- 8 KI8spOech9iEFOYsjhU9RCdiHGh3bHu1FyrOYmD9bA8= 9

やってみたこと(追記)

自分なりにいろいろなサイトを検索したのですが、普通にハッシュで取得できると記載があったのですが、実行してもできなかったので、質問させていただきました。

https://permanent-til-me.ssl-netowl.jp/archives/1681

Ruby

1#YAML.load_fileメソッドは、YAMLファイルをハッシュとして読み込むことができます。 2yaml = YAML.load_file('./sample.yml') 3puts yml # => {"fuga"=>{"foo"=>1, "bar"=>"Hello", "baz"=>["Ruby", "Python"]}} 4puts yml['fuga']['bar'] #=> Hello
退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/28 02:47

やってほしいことだけ書いてしまうと単なる作業依頼になってしまいます。 実際に試したこと等をお書きください。
guest

回答2

0

YAMLを直す場合

yaml

127: !binary |- 2 /Rj9APYPXa49U9GozrFWe61YIhxizw/e8XbAhXzF9Qo= 328: !binary |- 4 PO45v7cG6ZNolXikftTXeTgO27m0JC9I4boaUSzduZs= 529: !binary |- 6 KI8spOech9iEFOYsjhU9RCdiHGh3bHu1FyrOYmD9bA8=

キーが文字列である必要があるのならば

yaml

1"27": !binary |- 2 /Rj9APYPXa49U9GozrFWe61YIhxizw/e8XbAhXzF9Qo= 3"28": !binary |- 4 PO45v7cG6ZNolXikftTXeTgO27m0JC9I4boaUSzduZs= 5"29": !binary |- 6 KI8spOech9iEFOYsjhU9RCdiHGh3bHu1FyrOYmD9bA8=

コードを直す場合

ruby

1require 'yaml' 2yaml = YAML.load_file("./config/pwd.yml") 3# 2.6.0以降 4yaml = Hash.new.merge(*yaml) 5# 2.5.0以前 6yaml = yaml.each_with_object({}){|it, memo| memo.merge!(it) } 7 8logger.debug(yaml[28])

投稿2019/05/28 03:34

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

no1knows

2019/05/28 14:00

asmさん、詳細な手順をありがとうございます!
guest

0

ベストアンサー

yamlデータをハッシュとして読み込み、キーで値を取得したいです。

ならばハッシュとなる記法でyamlを書きましょう

投稿2019/05/28 03:06

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

no1knows

2019/05/28 03:15

ありがとうございます!!! 3時間調べてもわからなかったのは、元データの間違えだったんですね。 頂いたリンクを基に作成し直したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問