私はDockerで開発するためにEmacsを使用しています。 Emacsはコードを含むボリュームでホスト上で動作し、Dockerコンテナ内で実行され、テストされます。コンパイルコマンドをグローバルに変更する
私はいくつかのEmacsモードの編集を開始し、コマンドプレフィックスとしてドッカーを許可する変数を追加しました。したがって、.dir-locals
を使用すると、Dockerコンテナの内部にrspec
のようなコマンドを実行することができます。しかし、私はそこに行くためにrspec-mode
のコードを変更しなければならなかった。私が長い間見てきたモードは共通しているので、Emacsのコマンドであるcompile
を使ってコマンドを実行しています。
compile
関数や何かをcomintにグローバルに展開して、Docker内でコンパイルされた外部コマンドを実行する接頭辞を追加する機会があるのだろうかと思います。例えば。 rspec
はdocker-compose exec app rspec
に変換されます。理想的には、これは.dir-locals
で行われ、プロジェクト固有のプレフィックスを許可します。
これにより、コードを変更することなくどのモードでも動作するはずのはるかに一般的な解決策になります。 Dockerに限定されず、コマンドに特別な接頭辞が必要なモードもあります。
残念ながら、私はこの実行のようなものを得る方法はありません。
私はドッカーを使用していませんが、トランプ拡張機能があるようです:https://www.emacswiki.org/emacs/TrampAndDocker。あなたがコンテナ内のファイルやディレクトリを開くことができるようで、コンパイルコマンドは自動的にそこで実行されるはずです(ssh上のリモートマシンと同じように)。また、マルチコンパイルもチェックしてください。私はそれを使ってコンパイルコマンドを整理します。 – jpkotta
私はTrampを試していませんでしたが、私が読んだ限り、私のローカルソースツリーのファイルを編集する利点はありません。マルチコンパイルは興味深いように見えますが、私はこれをさらに調べる必要があります。別のアプローチは 'compile'を再定義して各コマンドに追加される接頭辞を取ることでした。 Dockerコンテナの内部に存在しないグローバルファイルパスを使用する拡張機能がいくつかあります。私の次のアイデアは、 '.dir-locals'プロジェクトルート変数を追加することです。ローカル変数でグローバルパスを置き換えることができます。 –
'compile'はデフォルトで' make'を実行します。適切な 'Makefile'を書いて、あなたがしなければならないことはできませんか? – Nick