0

我有一个带有以下内容的预提交钩子:

#!/bin/sh
cd web
bundle exec guard-jasmine

(它会进入网络,因为 Gemfile 和应用程序已设置在那里)

提交时,我收到许多语法错误,其中第一个是:

/Users/myusrname/.rvm/gems/ruby-2.0.0-p0/gems/guard-1.8.0/lib/guard.rb:400:in `require':
/Users/myusrname/.rvm/gems/ruby-2.0.0-p0/gems/guard-jasmine-1.16.0/lib/guard/jasmine.rb:25: odd number list for Hash (SyntaxError)
server:                   :auto,

/Users/myusrname/.rvm/gems/ruby-2.0.0-p0/gems/guard-jasmine-1.16.0/lib/guard/jasmine.rb:25: syntax error, unexpected ':', expecting '}'
server:                   :auto,

bundle exec guard-jasmineguard-jasmine在输入命令行时运行良好

有什么我想念的吗?

4

2 回答 2

0

best solution so far (at least for me):

rvm reload || exit $?
RUBY=`which ruby`
RUBY_DIR=`dirname $RUBY`
GEM_DIR=`rvm gemdir`
export PATH="$GEM_DIR/bin:$RUBY_DIR:$PATH"

gem install bundler
bundle install

bundle exec guard-jasmine
于 2013-09-06T11:49:25.190 回答
0

看起来guard-jasmine 正在运行Ruby 1.8.7,即使RVM gem 路径包含ruby-2.0.0-p0。在 Ruby 1.8 中使用新的 Ruby 1.9 Hash 语法时,odd number list for Hash (SyntaxError)会引发错误。

你需要要么

  • 确保 Git 预提交挂钩至少使用 Ruby 1.9
  • 使用 Guard::Jasmine 版本 1.14.0,它在 Ruby 1.8 上运行良好

由于 Ruby 1.8.7 无论如何都已报废,我建议尝试在 pre-commit-hook 中初始化 RVM:

#!/bin/sh
cd web
source "$HOME/.rvm/scripts/rvm"
rvm reload > /dev/null
bundle exec guard-jasmine

这意味着您已经设置了默认的 Ruby 版本

$ rvm --default use 1.9.2
于 2013-08-21T19:50:40.647 回答