Rails 빠른 팁 #6: tmux, tmuxinator 및 Overmind
tmux
tmux
는 "터미널 멀티플렉서"라고 하는 것입니다. documentation 은 이것이 정확히 무엇을 의미하는지 다음과 같이 설명합니다.It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal.
다음 스크린샷은 3개의 창이 있는 단일 tmux 창을 보여줍니다. 하나는 figlet을 통해 인사말을 표시하고 다른 하나는 실행 중
hugo serve
및 이 블로그 게시물을 편집하기 위한 세션Neovim입니다.이것은 이미 꽤 멋지지만 tmux는 iTerm's tmux integration 과 함께 사용하면 정말 빛납니다.
강조 표시된 두 설정은
오버마인드
Overmind은 tmux를 활용하는
Procfile
기반 응용 프로그램의 프로세스 관리자입니다. 이는 Foreman에 비해 몇 가지 장점이 있습니다.overmind connect web
. 이는 Foreman에서 특히 잘 작동하지 않는 binding.pry
또는 binding.irb
세션과 상호 작용할 때 특히 유용합니다. overmind stop sidekiq
또는 overmind restart web
. tmuxinator
tmuxinator
는 tmux 세션을 만들고 관리하기 위한 도구입니다. 다음은 DEV 코드베이스 작업을 위한 구성 파일입니다.name: dev
root: ~/src/dev.to
# Project hooks
# Runs on project start, always
on_project_start: >
pg_ctl -D /usr/local/var/postgres start;
redis-server --daemonize yes ;
brew services start elasticsearch-oss
# Run on project exit ( detaching from tmux session )
on_project_exit: tmux -CC attach
# Run on project stop
on_project_stop: >
overmind quit;
pg_ctl -D /usr/local/var/postgres stop;
redis-cli shutdown;
brew services stop elasticsearch-oss
# Specifies (by name or index) which window will be selected on project startup.
# If not set, the first window is used.
startup_window: shell
# Controls whether the tmux session should be attached to automatically.
# Defaults to true.
attach: false
windows:
- server: >
bundle install &&
yarn &&
rails db:migrate &&
rails data_updates:run &&
overmind start -f Procfile.dev
- logs: tail -f log/development.log
- shell:
좀 더 자세히 살펴보겠습니다.
root: ~/src/dev.to
이렇게 하면 세션의 루트 디렉터리가 설정되므로 각각의 새 창이 여기에서 시작됩니다.
on_project_start: >
pg_ctl -D /usr/local/var/postgres start;
redis-server --daemonize yes ;
brew services start elasticsearch-oss
이 tmux 세션을 시작할 때마다 위의 내용이 필요한 모든 서비스를 불러옵니다. 프로젝트에 따라 Nix , Homebrew 및 수동으로 설치된 도구의 조합을 사용하므로 이것이 잘 작동합니다.
windows:
- server: >
bundle install &&
yarn &&
rails db:migrate &&
rails data_updates:run &&
overmind start -f Procfile.dev
- logs: tail -f log/development.log
- shell:
이 섹션은 각각의 새 세션이 시작될 세 개의 창을 정의합니다. 먼저 필요한 설정 작업을 실행한 다음 Overmind를 사용하여 응용 프로그램을 불러옵니다. 두 번째 창은 개발 로그를 뒤덮고 마지막 창은 루트 디렉터리에서 셸을 엽니다.
attach: false
on_project_exit: tmux -CC attach
이 두 가지 옵션은 tmux 세션이 앞에서 언급한 iTerm 통합과 원활하게 작동하도록 합니다. 완료될 때 세션에 자동으로 연결하지 않고 에코가 비활성화된 제어 모드에서 연결합니다(
-CC
).on_project_stop: >
overmind quit;
pg_ctl -D /usr/local/var/postgres stop;
redis-cli shutdown;
brew services stop elasticsearch-oss
이렇게 하면 세션을 종료할 때 모든 프로세스와 서비스가 중지됩니다. iTerm 통합으로 인해 모든 관련 탭이 닫히고 제어 세션이 다시 나타납니다.
내 설정이 작동하는 방식은 다음과 같습니다.
요약
tmux, Overmind 및 tmuxinator의 조합은 기능이 풍부하고 강력하며 유연한 로컬 개발 경험을 제공합니다. 이 워크플로에 관심이 있다면 모든 도구를 (한 번에) 조정할 필요가 없다는 점을 염두에 두고 실험하고 자신에게 맞는 것을 유지하십시오.
Reference
이 문제에 관하여(Rails 빠른 팁 #6: tmux, tmuxinator 및 Overmind), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/citizen428/rails-quick-tips-6-tmux-tmuxinator-and-overmind-4850텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)