我在/home/myuser/watchDir/myapp里有一个rails应用程序,一个incron作业被设置为监视./watchDir的修改。 一旦被触发,incron将运行一个脚本,/usr/local/bin/myscript.sh。 这是我唯一能让incron运行脚本的地方。 在该脚本中,我调用了在我的根应用程序中运行
rake
和
bundle
命令。 脚本正在运行(我有一个测试),但
bundle
和
rake
命令都默默地失败了。 我对Linux相当陌生,互联网上的研究已经给出了一些解决方案。 我的脚本中都有绝对路径。 我试着把我的bash_profile添加到scripts/incron命令中。 我试着让incron脚本运行位于我主目录下的另一个脚本。 所有的脚本都是可执行的。 我试着用
--gemfile
选项来替换
bundle
,但这并不奏效。 有没有人知道我在这里要做什么? 基本上,我想在RAILS_ROOT之外运行
bundle
和
rake
命令。 我还想知道incron是否使rails命令的使用变得复杂。 谢谢。
EDIT:
以下是相关文件。
Incrontab。
/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
# 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