簡體   English   中英

初始化rbenv並從shell腳本運行ruby腳本

[英]Initialize rbenv and run ruby script from shell script

初始化rbenv並從shell腳本運行ruby腳本

我希望svnserve運行pre-commit hook,寫在ruby上。 由於svnserve以root用戶身份運行,因此它對用戶rbenv安裝一無所知。

我設置了一個軟鏈接/ usr / bin / ruby​​ - > /home/admin/.rbenv/shims/ruby。 結果,當我嘗試

#!/usr/bin/ruby
puts "Pre-commit hook!"

它顯示錯誤:

Transmitting file data .svn: Commit failed (details follow):
svn: Commit blocked by pre-commit hook (exit code 255) with no output.

當我在服務器上手動運行時:

admin $ sudo ./pre-commit
/usr/bin/ruby: line 4: exec: rbenv: not found

所以,我想,需要rbenv初始化,但是如何?

在鈎子路徑中:

預提交:

#!/bin/bash
export HOME=/home/user
if [ -d $HOME/.rbenv ]; then
  export PATH="$HOME/.rbenv/shims:$PATH"
  eval "$(rbenv init -)"
fi
$0.rb $*

預commit.rb:

#!/usr/bin/env ruby
ARGV.each_with_index { |arg, index| puts "Index #{index}: Argument #{arg}" }

你應該在使用之前初始化rbenv

/path/to/user/home/.rbenv/bin/rbenv init

然后全局設置ruby版本:

rbenv global DESIRED-RUBY-VERSION

或者localy:

rbenv local DESIRED-RUBY-VERSION

或者每個shell:

rbenv shell DESIRED-RUBY-VERSION

雖然不確定shell設置可以在沒有tty的情況下工作。

所以你可以創建一個shell腳本pre-commit.sh並將其注冊為svn鈎子。

在里面初始化rbenv並調用你的pre-commit.rb文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM