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