/home/myuser/watchDir/myapp に Rails アプリケーションがあり、変更のために ../watchDir を監視する incron ジョブが設定されています。トリガーされると、incron はスクリプト /usr/local/bin/myscript.sh を実行します。これは、スクリプトを実行するための incron を取得できる唯一の場所です。そのスクリプトには、ルート アプリで実行する呼び出しrake
とコマンドがあります。bundle
I スクリプトは実行されています (そのためのテストがあります) が、コマンドbundle
とrake
コマンドの両方がサイレントに失敗します。私はLinuxにかなり慣れていないので、インターネットの調査でいくつかの解決策が得られました。スクリプトにはすべての絶対パスがあります。scripts/incron コマンドに bash_profile を追加してみました。ホームディレクトリにある別のスクリプトをincronスクリプトで実行してみました。すべてのスクリプトは実行可能です。--gemfile
オプションを使ってみたbundle
しかし、それはうまくいきません。私がここで何をしなければならないか知っている人はいますか?基本的に、 RAILS_ROOT の外でbundle
andコマンドを実行したいと考えています。rake
また、incron によって rails コマンドの使用が複雑になるかどうかも知りたいです。ありがとう。
編集:
関連ファイルは次のとおりです。
インクロタブ:
/home/myuser/watchDir/ IN_MODIFY,IN_CLOSE_WRITE,IN_CLOSE_NOWRITE /bin/bash /usr/local/bin/runT.sh $@/$#
私もこれを試しました:
/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' $@/$#
呼び出しているスクリプトは次のとおりです。
#!/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 ファイル:
# .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