RoRボーでの作業Ubuntuには、多くのターミナルウィンドウが含まれます。 1つのRailsサーバー、Sporkを使用した別のGuard、3番目のRubyコンソールなどで、インターネットでtmuxというプログラムに出会いました。 詳細を説明しなくても、1つのターミナルウィンドウで複数のコンソールを操作できるようになります(用語の説明はLinuxにお任せください)。 写真では次のようになります。
tmuxをインストールし(
sudo apt-get install tmux
) 、基本を学んだ後、このマルチプレクサに夢中になりました。 彼についてのすべてが良いです。 1つの「しかし」があります-再起動するたびに、tmuxウィンドウを再構成する必要があります。 そして、これはさらに5分です! tmuxウィンドウの状態を保存することは本当に不可能ですか?
インターネット上で、cronを介してセッションを個別のスクリプトとして保存することを提案するいくつかのソリューションが見つかりました。 私にとって、初心者として、これらのタンバリンとのダンスはすべて複雑で、理解できず、機能的でもありませんでした。 考えた後、必要な3つのウィンドウで新しいtmuxセッションを起動し、いくつかのパラメーターを取得するbashスクリプトを作成することにしました。
パラメーターには以下が必要でした:
- パラメータなしで起動すると、新しいtmuxセッション、新しいウィンドウが作成され、3つのパネルに分割されます(最初のパネルの最初のウィンドウにフォーカスがあります)
- -sはRailsの2番目のパネルでサーバーを起動します
- -tは、3番目のパネルでGuard + Sporkを起動します(TDD RSpec環境)
- -oお気に入りのSublime Text 3エディターでプロジェクトを開きます
- -c最初のパネルでRailsコンソールが起動します
tmuxのマニュアルを読み、bashスクリプトについて少し学習した後、次の行を〜/ .bash_aliasesに追加しました。
alias rapp='cd ~/work/ruby/Apps/sample_app' alias rappo='cd ~/work/ruby/Apps/sample_app && subl .' alias rapps='/bin/bash --login' alias tmux-k='tmux kill-session' alias tmux-ko='tmux kill-server' alias tmux-l='tmux ls'
ここではすべてが簡単です。 プロジェクト(sample_app)へのアクセスを容易にするためのいくつかのショートカットと、tmuxのいくつかのショートカットを追加しました。
次に、/ binフォルダーにtmux-sファイルを作成し(
sudo touch tmux-s
)、実行可能にしました(
sudo chmod +x tmux-s
)。 実際、このファイルには、必要なパネルとウィンドウでtmuxセッションを発生させ、必要なパラメーターを受け入れるコードがあります。 ファイルの内容は次のとおりです。
#!/bin/bash ####################### # Constants flag='0' ####################### # Config Variables session_name="rails" first_window_name="first" second_window_name="second" base_pane_command="rapp && rapps" server_start_comand="rails s" tests_start_comand="guard" project_open_command="rappo" console_open_command="rails c" ####################### # Addpanes add_panes() { tmux split-window -h -t "${session_name}" tmux split-window -v -t "${session_name}" tmux send-keys -t "${session_name}":"${first_window_name}".1 "${base_pane_command}" Cm tmux send-keys -t "${session_name}":"${first_window_name}".2 "${base_pane_command}" Cm tmux send-keys -t "${session_name}":"${first_window_name}".3 "${base_pane_command}" Cm tmux send-keys -t "${session_name}":"${first_window_name}".2 "${server_start_comand}" tmux send-keys -t "${session_name}":"${first_window_name}".3 "${tests_start_comand}" } ####################### # Tmux server start tmux_session_start() { if [ "${flag}" != '1' ] ;then echo "Session ${session_name} start..." tmux new-session -s ${session_name} -n ${first_window_name} -d add_panes fi } ####################### # Rails server start rails_server_start() { tmux send-keys -t "${session_name}":"${first_window_name}".2 Cm } ####################### # Guard start guard_tests_start() { tmux send-keys -t "${session_name}":"${first_window_name}".3 Cm } ####################### # Open project in Sublime Text open_project() { tmux send-keys -t "${session_name}":"${first_window_name}".1 "${project_open_command}" Cm } ####################### # Ruby console start ruby_console_start() { tmux send-keys -t "${session_name}":"${first_window_name}".1 "${console_open_command}" Cm } ####################### # error_param error_param() { tmux kill-session echo "Session ${session_name} killed..." echo "Parameter is incorrect! Avaliable parameters: -s for start Rails server -t for start Gusrd server -o for open project in Sublime Text -c for open Ruby concole" exit 1 } if [ ! ${1} ] ;then tmux_session_start fi while [ ${1} ] ;do case ${1} in -s) tmux_session_start rails_server_start flag='1' shift 1 ;; -t) tmux_session_start guard_tests_start flag='1' shift 1 ;; -o) tmux_session_start open_project flag='1' shift 1 ;; -c) tmux_session_start ruby_console_start flag='1' shift 1 ;; *) error_param ;; esac done echo "Success!" tmux select-pane -L -t "${session_name}" tmux resize-pane -R -t "${session_name}":"${first_window_name}".1 25 tmux new-window -n "${second_window_name}" -t "${session_name}" tmux select-window -t "${session_name}":"${first_window_name}" tmux attach -t "${session_name}"
構成変数ブロックにはユーザー設定が含まれます
また、正しい操作のために、〜/ .tmux.confファイルを作成し、ここから設定を入力することをお勧めします: tmuxユーザー設定
それだけです 新しいターミナルを開いて
tmux-s
、便利なtmuxウィンドウを取得して、Ruby on Railsで作業できるようにします。 パラメーターを使用して遊ぶことができます-それらも機能します。 パスがプロジェクトに書き込まれるように、〜/ .bash_aliasesからエイリアスを適切に構成することのみが重要です。 また、このスクリプトはrailstutorial.ruの本を勉強する人を支援するために書かれていることを忘れないでください 。 Guardがない場合、スクリプトは-tオプションでは正しく機能しません。 Sublime Textもインストールします。
厳しく判断しないでください。 初心者から初心者まで。 私はこのスクリプトのために1日殺し、それを共有することにしました(ロシア語のリソースでそのような指示は見つかりませんでした)。 適切な批判を歓迎します(私はLinuxを初めて使用するので、コードは通常とはかけ離れていると確信しています)。