fswatch를 사용하여 Rails 스크립트 감시자/실행자 빌드

4304 단어 rails
저는 Rails 콘솔에서 코드를 테스트하는 데 많은 시간을 할애하는 경우가 많습니다. 내 예제가 더 복잡해짐에 따라 스크립트를 작성하기 위해 임시 ruby ​​파일을 만든 다음 콘솔에 복사하여 붙여넣습니다.

이것은 잘 작동하지만 지루하고 최적화할 수 있습니다.

Rails 러너(rails r)를 사용하면 애플리케이션 환경의 컨텍스트 내에서 루비 스크립트를 실행할 수 있습니다.

예를 들어, 이름이 runme.rb인 루비 파일이 있고 그 안에 디버깅 코드가 있는 경우:

puts Member.count

rails runner runme.rb를 사용하여 해당 스크립트를 실행할 수 있습니다. 이것은 좋지만 파일을 수정할 때마다 터미널로 돌아가야 합니다. 이것을 자동화할 수 있다면 어떨까요?

fswatch은 교차 플랫폼 파일 변경 모니터입니다. 지정한 파일을 감시한 다음 변경 시 스크립트를 실행합니다.

이 파일이 변경될 때 자동으로 실행되도록 Rails 앱 내에서 스크립트를 설정해 보겠습니다.

fswatch 설치



fswatch를 설치하는 것은 쉽습니다. Mac에서는 다음을 실행할 수 있습니다.

$ brew install fwatch


감시자 스크립트 설정


bin/console-runner에서 실행 가능한 bash 스크립트를 만들었습니다.

#!/bin/bash

usage() {
    echo "Watch a ruby script and use Rails runner each time it changes"
    echo ""
    echo "For example, you may have a file called \`runme.rb\` that you would"
    echo "run using Rails runner (e.g. \`rails runner runme.rb\`). This script"
    echo "will watch the file and run it each time there is a change."
    echo ""
    echo "Usage:"
    echo "  ./script/console-runner <ruby-script>"
}

if [ $# -eq 0 ]; then
    usage
    exit 1
else
  fswatch -0 -o $1 | xargs -0 -n1 -I{} rails runner $1
fi


스크립트를 실행 가능하게 만드십시오.

$ chmod +x bin/console-runner


다음 명령을 실행하여 스크립트 문서를 테스트할 수 있습니다.

$ ./bin/console-runner
Watch a ruby script and use Rails runner each time it changes

For example, you may have a file called `runme.rb` that you would
run using Rails runner (e.g. `rails runner runme.rb`). This script
will watch the file and run it each time there is a change.

Usage:
  ./bin/console-runner <ruby-script>


볼 콘솔 스크립트 만들기



다음으로 Rails 앱의 루트 폴더에 runme.rb라는 파일을 만들었습니다.

puts Member.count
puts Rails.env


스크립트 실행



마지막으로 스크립트를 실행할 수 있습니다.

./bin/console-runner runme.rb


성공! 이제 runme.rb를 수정할 때마다 스크립트가 다시 실행됩니다.

좋은 웹페이지 즐겨찾기