仅当从git预提交钩子运行时才保护jasmine语法错误

仅当从git预提交钩子运行时才保护jasmine语法错误,git,jasmine,guard,pre-commit-hook,Git,Jasmine,Guard,Pre Commit Hook,我有一个带有以下内容的预提交钩子: #!/bin/sh cd web bundle exec guard-jasmine (由于文件和应用程序都设置在web上,所以会将其刻录到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/ge

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

#!/bin/sh
cd web
bundle exec guard-jasmine
(由于文件和应用程序都设置在web上,所以会将其刻录到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-jasmine
guard-jasmine
在命令行中键入时运行良好


有什么我遗漏的吗?

看起来guard jasmine正在使用Ruby 1.8.7运行,即使RVM gem路径包含Ruby-2.0.0-p0。在Ruby 1.8中使用新的Ruby 1.9哈希语法时,会抛出哈希的奇数列表(SyntaxError)

你要么

  • 确保Git预提交钩子至少使用了Ruby 1.9
  • 使用Guard::Jasmine 1.14.0版,它在Ruby 1.8上运行良好
由于Ruby 1.8.7已经是生命的终结,我建议尝试在pre-commit钩子中初始化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
迄今为止的最佳解决方案(至少对我而言):
我认为它使用的是ruby 1.8.7,我需要做一些挖掘,看看如何更改它,谢谢。我的结论是:-没有安装bundler或bundle安装。
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