質問: 書籍「Ruby on Rails6実践ガイド」を読み進めています。 現在P48で行き詰まっています。 『「Baukis2」のプオジェクトディレクトリ直下にspecディレクトリがあります。その下にexperimentsというサブディレクトリを作り、string_spec.rbというファイルを作成してください』と書かれていて、新規ディレクトリと新規ファイルをディレクトリ下に作ることはできたのですが、コンテナからホストにコピーする術がどうしても分からずwebコンテナ上にあるstring_spec.rbに記述するコードを編集することができず、進むことができません。 webコンテナからホストOS側にファイルをコピーさせたいのですが、ディレクトリの記述がうまくいっていないようで、困っています。 やりたいこと。 webコンテナ側のファイルをホストOS側にコピーして編集し、 ホストOS側からwebコンテナ側に編集済みのファイルをコピーし直したいと考えています。 webコンテナ app/baukis2/spec/experiments/string_spec.rb この「string_spec.rb」をホスト側にコピーしたいと考えています。 ホストOS側 ユーザー名/rails-compose/apps/baukis2/spec/experiments この「experiments」のディレクトリの中にコピーデータを入れたいと思っています。 コマンドとしては $ docker cp rails6-compose_web_1:/apps/baukis2/spec/experiments/string_spec.rb /ユーザー名/apps/baukis/spec/experiments だと思うのですが、 「invalid output path: directory "/ユーザー名/apps/baukis2/spec" does not exist」 ディレクトリが存在しないと出てしまい、どうすればうまくコピーされるのか分かりません。 ディレクトリをどう記述すればうまくいくのかを教えていただきたいです。 さらに調べてみるとVSCodeの中で引き出して編集できるようなので、 Remote - Containers Remote - SSH Remote - SSH:Editing Configuration Files Remote - WSL Remote - Development をインストールしたのですが、まずはコンテナからホストにコピーして、ホスト側で編集したものをコンテナにコピーし直すからやった方が良いかなと感じました。 様々なサイトを参考にしているのですが、なかなかうまくいきません。 何卒よろしくお願いします。 補足情報(FW/ツールのバージョンなど) Ruby 2.6.3p62 Rails 6.0.3.2 macOS Catalina 10.15.6 VSCOde 1.47.3
回答: ### 修正 > > Remote - WSL > > > でWSLの話かと思いましたが、動作環境書いてあるのを見落としてました。 回答内容的にはそれほど変更はありません 正しいディレクトリを指定していないため発生しているエラーなので。 こういう記事を参考にしてGUI上から正しいパスを取得して、それを記述すればいいのではないでしょうか。 ~~WSL使ってるみたいですが、WSL側のディレクトリ構造を考えると~~ `/ユーザー名/apps/baukis/spec/experiments` という階層は普通ありえないと思うんで、シンプルに出力ディレクトリを間違っているだけじゃないですか? `/home/ユーザー名/apps/baukis/spec/experiments`ならあるのかもしれませんが。 ~~WSLはあくまでLinuxを動かす仕組みなので、WSL側で動くLinuxのディレクトリ階層をちゃんと理解しているのか、というところがまず怪しいため、確認した方が良いです。~~