/home/myuser/watchDir/myapp에 레일스 응용 프로그램이 있고 수정을 위해 ../watchDir을보기 위해 설정되어있는 incron 작업이 있습니다. 일단 트리거되면 incron은 /usr/local/bin/myscript.sh 스크립트를 실행합니다. 이것은 내가 스크립트를 실행하기 위해 얻을 수있는 유일한 장소입니다. 해당 스크립트에서 rake
및 bundle
명령을 내 루트 응용 프로그램에서 실행하도록 호출했습니다. I 스크립트가 실행 중입니다 (테스트가 있습니다). bundle
과 rake
명령은 모두 자동으로 실패합니다. 나는 리눅스에 상당히 익숙하지 않고 인터넷 연구는 몇 가지 해결책을 제시해 주었다. 내 스크립트에는 절대적인 경로가 있습니다. bash_profile을 scripts/incron 명령에 추가하려고했습니다. 내가 incron 스크립트 내 홈 디렉토리에있는 다른 스크립트를 실행하는 데 시도했다. 모든 스크립트는 실행 가능합니다. bundle
에 --gemfile
옵션을 사용해 보았습니다.하지만 wokr는 아닙니다. 아무도 내가 여기서해야 할 일을 알고 있니? 기본적으로 RAILS_ROOT 외부에서 bundle
및 rake
명령을 실행하고 싶습니다. 나는 또한 incron이 레일 명령의 사용을 복잡하게하는지 알고 싶다. 감사.rake 외부에서 rake 실행/Incron은 레일에 대해 rake 또는 bundle 명령을 실행하지 않습니다.
편집 :
다음있는 관련 파일 :
Incrontab : 나는이 시도
/home/myuser/watchDir/ IN_MODIFY,IN_CLOSE_WRITE,IN_CLOSE_NOWRITE /bin/bash /usr/local/bin/runT.sh [email protected]/$#
: 여기
/home/myuser/watchDir/ IN_MODIFY,IN_CLOSE,IN_CLOSE_WRITE,IN_CLOSE_NOWRITE source '/home/myuser/.bash_profile && /bin/sh /usr/local/bin/runT.sh' [email protected]/$#
을 그리고 그것을 부르고 스크립트입니다 :
#!/bin/bash
mkdir /home/myuser/worked #This is to ensure that that incron is running and executing this script
cd /home/myuser/watchDir/myapp
/home/myuser/.rvm/gems/ruby-1.9.3-p545/bin/bundle install --gemfile /home/myuser/watchDir/myApp/Gemfile
/home/myuser/.rvm/gems/ruby-1.9.3-p545/bin/rake -f /home/myUser/watchDir/myApp
내 .bash_profile에 파일을
/home/myuser/watchDir/ IN_MODIFY,IN_CLOSE_WRITE,IN_CLOSE_NOWRITE /bin/bash /usr/local/bin/runT.sh [email protected]/$#
하고 스크립트가로 :
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
source ~/.profile
귀하의 incron 스크립트의 내용을 게시하는 것이 도움이 될 수 있습니다. 당신의 스크립트가 없다면 추측하고 싶지만'rake'와'bundle' 명령을 실행하고있는 스크립트 상단에'cd/path/to/approot'를 추가 할 수 있습니까? – Beel
@Beel Yea 나는 그것을 시험해 보았다. 나는 스크립트를 게시 할 것이다. – user3195786
incron에 관한 까다로운 점은 (당신이 발견 한 것처럼 보인다) 스크립트가 깨끗한 환경에서 실행된다는 것이다. 따라서 환경을 구축해야합니다. 두 번째 예제는 사용자 테스터의 .bash_profile을 소싱하여이 작업을 시도합니다. 이를 수행해야하지만, 사용자 myuser에 대해이를 수행해야합니다. 그것이 당신이하고있는 일인가요? incron 어딘가에 로그인해야합니다 - 로그에 아무것도 있는지? 또한 RVM을 사용하고 있기 때문에 원본 bash_profile은 rvm setup 스크립트를 소스로 사용해야합니다. 미안 해요, 오늘 맥에 있지 않아서 정확한 설정을 테스트 할 수는 없지만 HTH. – Beel