はじめに
DockerとRailsを使った開発環境でpryのedit
コマンドが効かなかったので対処してみたときの記録です。
※Docker環境下での話です。ローカルでは普通に動作しましたので、割愛します。
この記事が役に立つ方
- あれ?なんか
edit
コマンド効かなくね?と思っている方
この記事のメリット
- Docker環境下でpryの
edit
コマンドが使えるようになる
環境
- macOS Catalina 10.15.1
- zsh: 5.7.1
- Ruby: 2.6.5
- Rails: 5.2.3
- Docker: 19.03.5
- docker-compose: 1.24.1
pryのedit
コマンドとは?
以下、公式のWikiです。
Editor integration · pry/pry Wiki · GitHub
The edit command is used to invoke your default editor. This command will load your file once you have finished editing it (unless you pass the -n or --no-reload flag to edit).
pryの画面でそのままデフォルトのエディタを開き、ファイルの編集が出来るコマンドです。
これまでpryの画面上からファイルをいじったりはしていなかったのですが、デバッグ効率が上がるかなと思ったので導入します。
【事前準備】
こちらのドキュメントに従ってDocker環境下でgem pry-railsを使うための準備は済ませておきました。
Using pry-rails with Docker · GitHub
上記ドキュメントの流れは以下の通りです。
app:
tty: true
stdin_open: true
上記設定を追加。
↓
group: :development
gem 'pry-rails'
end
gemを追加。
↓
docker-compose build
ビルド。
↓
docker-compose up
起動。
↓
docker ps
RailsアプリのCONTAINER ID
かNAMES
を確認
↓
docker attach `CONTAINER ID`か`NAMES`
↓
binding.pry
※好きなところで
これで普通にpryでデバッグ可能な状態になります。
とりあえずedit
コマンド使ってみようとする
※Docker環境下です。
とりあえずedit
コマンドを叩いてみます。
[1] pry(main)> edit
Error: Please set Pry.config.editor or export $VISUAL or $EDITOR
するとエラー発生。
Pry.config.editor
か、環境変数$VISUAL
か$EDITOR
を設定してねという内容。
先程のWikiの、Setting the default editorのくだりに設定方法が記載されていたので、その通りに進めてみます。
1. ~/.pryrc
を作成・設定
pryの設定ファイルは.pryrc
です。
今回はなかったので作成しました。
以下設定方法についてです。
Editor integration · pry/pry Wiki · GitHub
今回エディタはvimを使いたかったので、以下のように設定。
Pry.config.editor = proc { |file, line| "vim #{file}:#{line}" }
該当のファイルと行に飛んでくれる仕様に例にならってみましたが、うまくいきません。
ローカルの設定ファイルは読み込まれないんですね。
2.Railsアプリのディレクトリ内に.pryrc
を配置する。
下記記事を参照し、Railsアプリのルートディレクトリに.pryrc
を配置してみることにしました。
docker-compose上のRailsのデバッグを行う - My External Storage
Pry.config.editor = proc { |file, line| "vim #{file}:#{line}" }
※設定は先程と同様です。
もう一回試します。
[1] pry(main)> edit
Error: `vim ファイル名:行数` gave exit status: 127
別のエラー発生。
惜しい!コマンド自体は正しそうに見えますが、127
なるエラーが。
何これ?と思って調べると、
「コマンドが見つからない、もしくはタイポ」
らしいと判明。
...ということは、そもそもvim
がない?
3.vim
をインストールする
なければいくらコマンドが正しくても、どうしようもないですよね。
調べると、こちらの記事を発見しました。
Docker — docker コンテナの中で vim が使えない場合 - Qiita
apt-get install vim
上記を追記。
↓
docker-compose build
↓
docker-compose up
↓
rails c
などでpry起動。
[1] pry(main)> edit
# =>vim起動
無事起動!
おわりに
最後まで読んで頂きありがとうございました
vimがないという環境もあるのかとびっくりしましたが、ローカルとDocker環境の境目を意識するいい経験になりました
これでデバッグ効率が上がりそうです