我有一个脚本将我的代码提交给GitHub并且我修改了它以在Web服务器上运行一个应该提取新代码的脚本,它成功完成,但是后来无法运行必要的Rails命令像Rake或Bundle。我感到困惑,因为我更改了脚本顶部的项目目录,git pull
运行正常。我甚至尝试将Rails命令调用放在顶部带有cd /home/rails/
的子shell中,但仍然没有工作,也没有指定每个Rails脚本的完整路径。我是以错误的方式解决这个问题,还是有更好的方法来自动化这两个过程?
提交脚本:
git add -A
git commit -m "$1"
git push
ssh root@example.com sh /home/rails/update_script.sh
更新服务器上的脚本:
service unicorn stop
cd /home/rails/
git pull
rake db:migrate RAILS_ENV=production
rake assets:precompile RAILS_ENV=production
bundle install
service unicorn start
exit
编辑:哎呀,忘了输出。以下是服务器的输出:
* Stopping Unicorn web server unicorn
...done.
From https://github.com/my_name/example
7e0fee4..17fd564 master -> origin/master
Updating 7e0fee4..17fd564
Fast-forward
fresh.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
/usr/bin/env: ruby: No such file or directory
/usr/bin/env: ruby * Starting Unicorn web server unicorn
: No such file or directory
/usr/bin/env: ruby: No such file or directory
...done.
答案 0 :(得分:1)
也许您必须将/usr/local/rvm/rubies/ruby-2.1.5/bin
添加到$PATH
。
我认为你应该在运行rake任务之前运行bundle install
。
试试这个:
service unicorn stop
cd /home/rails/
git pull
export PATH=$PATH:/usr/local/rvm/rubies/ruby-2.1.5/bin
bundle install
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile
service unicorn start
exit