前提
プログラミング超初心者です。
RubyでAmazonの注文履歴データを取得するアプリケーションを作ろうとしているのですが、
途中で躓いてしまい、解決できていないままです。
どう質問すればよいか分からないため、読み辛い点が多々あるかと思われます。
作業は VSCodeで行っています。
Rubyのバージョン:ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
実現したいこと
実行時に
- [c:/Users/(ユーザー名)/Ruby>ruby account_reader.rb account.json {:email=>"(メールアドレス)", :password=>"(パスワード)"} (メールアドレスが表示される) (パスワードが表示される)
上述した、JSONファイル名を指定→Rubyのハッシュに変換→アカウント情報を読み込んだハッシュにアクセスする、といった形にしたいです。
発生している問題・エラーメッセージ
c:/Users/(ユーザー名)/Ruby/tempCodeRunnerFile.rb:6:in `initialize': no implicit conversion of nil into String (TypeError) from c:/Users/(ユーザー名)/Ruby/tempCodeRunnerFile.rb:6:in `open' from c:/Users/(ユーザー名)/Ruby/tempCodeRunnerFile.rb:6:in `read_account' from c:/Users/(ユーザー名)/Ruby/tempCodeRunnerFile.rb:12:in <main>'
VSCode内でaccount_reader.rbを実行した際に表示されます。
コマンドプロンプトから実行した場合は、何も出力されませんでした。
また、tempCodeRunnerFile.rbは作成しておりませんが、エラーメッセージに表示されています。
なお、ユーザー名の横の「Ruby」は、Rubyファイルを保存しているフォルダーです。
該当のソースコード
Rubyのコード(account_reader.rb)
#frozen_string_literal: true require 'json' def read_account(filename) File.open(filename) do |file| JSON.parse(File.read(file), symbolize_names: true) end end if __FILE__ == $PROGRAM_NAME account = read_account(ARGV[0]) p account puts account[:email] puts account[:password] end
JSONのコード(account.json)
{ "email": "(メールアドレス)", "password": "(パスワード)" }
回答1件
あなたの回答
tips
プレビュー