繁体   English   中英

仅当从git pre-commit挂钩运行时,Guard-Jasmine语法错误

[英]Guard-jasmine syntax errors only when run from git pre-commit hook

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

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

(由于将Gemfile和应用程序设置在其中,因此将它CD到Web中)

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

/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可以正常运行

有什么我想念的吗?

即使RVM gem路径包含ruby-2.0.0-p0,看起来卫冕茉莉花也在Ruby 1.8.7上运行。 在Ruby 1.8中使用新的Ruby 1.9 Hash语法时,会抛出odd number list for Hash (SyntaxError)的错误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

迄今为止最好的解决方案(至少对我而言):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM