在rails_root / Incron之外运行rake不会为rails运行rake或bundle命令

我在/ home / myuser / watchDir / myapp中有一个rails应用程序,并设置了一个incron作业来监视../watchDir进行修改。 一旦触发,incron将运行脚本/usr/local/bin/myscript.sh。 这是我能从中运行脚本的唯一地方。 在该脚本中,我调用了在我的根应用程序中运行rakebundle命令。 我脚本正在运行(我有一个testing),但bundlerake指令都失败默默。 我相当新的Linux和互联网研究提供了一些解决scheme。 我的脚本里有所有的绝对path。 我试图添加我的bash_profile脚本/ incron命令。 我试着让incron脚本运行位于我的主目录中的另一个脚本。 所有的脚本都是可执行的。 我尝试使用--gemfile选项的bundle ,但不wokr。 有谁知道我必须在这里做什么? 基本上,我想在RAILS_ROOT之外运行bundlerake命令。 我也想知道incron是否会使rails命令复杂化。 谢谢。

编辑:

这里是相关的文件:

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 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 

总结我最后的意见…改变你的icrontab条目是:

 /home/myuser/watchDir/ IN_MODIFY,IN_CLOSE_WRITE,IN_CLOSE_NOWRITE /bin/bash /usr/local/bin/runT.sh $@/$# 

而脚本是:

 #!/bin/bash source /home/myuser/.bash_profile 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