Ruby: そのようなファイルまたはディレクトリはありません @ rb_sysopen - testfile (Errno::ENOENT)
概要
ファイルに何かを書き込みたい。
# where userid is any intger [sic]
path = Rails.root + "public/system/users/#{user.id}/style/img.jpg"
File.open(path, 'wb') do |file|
file.puts f.read
end
このコードを実行すると、このエラーが発生します。このフォルダーが存在しないことはわかっていますが、ファイルが存在しない場合、w モードで File.open を実行すると新しいファイルが作成されます。
これが機能しないのはなぜですか?
解決策
rakeタスク内でgetsを使用しようとしていますか?次のエラー メッセージが表示される場合があります。
エラーを検索してこのページにたどり着きましたか?この答えはOPのためのものではなく、あなたのためのものです。
STDIN.gets を使用します。問題が解決しました。これは、gets を使用するだけでは .gets に解決され、rake はグローバル変数をオーバーライドするため、gets は存在しないファイル ハンドルを開こうとします。その理由は次のとおりです。
gets.chomp() と STDIN.gets.chomp() の違いは何ですか?