我正在尝试获取更新后的git挂钩以停止服务器,从更新的存储库中提取更改,然后再次启动服务器。钩子正在运行,但它不断吐出错误。
以下是错误:
remote: RVM is not a function, selecting rubies with 'rvm use ...' will not work.
remote: You need to change your terminal emulator preferences to allow login shell.
...
remote: /home/user/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find thin (>= 0) amongst [] (Gem::LoadError)
...
remote: fatal: Not a git repository: '.'
这是更新后的文件:
#!/bin/sh
PATH=/home/... (the value of "echo $PATH" on the remote server)
rvm use 1.9.3
cd /home/project_directory
thin stop
git pull ../gitdirectory.git
thin start -e production -p 3000 -d
即使用精确的位置替换rvm和thin,即“哪个rvm”,也无法解决错误。
任何人都可以对这里出了什么问题有所了解吗?谢谢!
答案 0 :(得分:0)
rvm
问题众所周知,令人恼火,answered elsewhere.尝试rvm site.上列出的技术至于git
错误,看起来像是你的问题只需在错误的目录中发出命令。您是否尝试在服务器上以钩子的用户身份运行它?
答案 1 :(得分:0)
对于rvm use ...
,您需要source $HOME/.rvm/scripts/rvm
,但这不适用于您在shebang #!/bin/sh
中使用的shell。
而是尝试这个脚本:
#!/bin/sh
cd /home/project_directory
source $( $HOME/.rvm/bin/rvm in . do rvm env --path )
thin stop
git pull ../gitdirectory.git
thin start -e production -p 3000 -d