Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SublimiteText2 RubyTest“;验证Ruby语法;触发UTF-8错误_Ruby_Utf 8_Sublimetext2_Ruby Test - Fatal编程技术网

SublimiteText2 RubyTest“;验证Ruby语法;触发UTF-8错误

SublimiteText2 RubyTest“;验证Ruby语法;触发UTF-8错误,ruby,utf-8,sublimetext2,ruby-test,Ruby,Utf 8,Sublimetext2,Ruby Test,我正在Mac OS 10.7.5上使用rvm和ruby 1.9.3 我希望能够使用Sublime Text 2 RubyTest包来验证我的Ruby语法 但是,当我尝试在任何Ruby文件(test.rb)上运行Tools->RubyTest->Verify Ruby Syntax)时,RubyTest控制台中会显示以下错误: /Users/jladieu/.rvm/rubies/ruby-1.9.3-p194/bin/ruby:1:无效的多字节字符(US-ASCII) 我的test.rb文件内容

我正在Mac OS 10.7.5上使用rvm和ruby 1.9.3

我希望能够使用Sublime Text 2 RubyTest包来验证我的Ruby语法

但是,当我尝试在任何Ruby文件(
test.rb
)上运行
Tools->RubyTest->Verify Ruby Syntax
)时,RubyTest控制台中会显示以下错误:

/Users/jladieu/.rvm/rubies/ruby-1.9.3-p194/bin/ruby:1:无效的多字节字符(US-ASCII)

我的
test.rb
文件内容非常简单:

类测试
你好
把“你好,世界”
结束
结束
我的
RubyTest.sublime\u设置文件如下所示:

{
“erb_verify_命令”:“erb-xT-{file_name}| ruby-c”,
“ruby\u verify\u命令”:“ruby-c{file\u name}”,
“run_ruby_unit_命令”:“bundle exec ruby-Itest{relative_path}”,
“run_single_ruby_unit_命令”:“bundle exec ruby-Itest{relative_path}-n'{test_name}”,
“run_cumber_命令”:“宙斯cumber{relative_path}——无颜色”,
“run_single_cucumber_命令”:“宙斯cumber{relative_path}:{line_number}——无颜色”,
“run_rspec_命令”:“zeus rspec{relative_path}”,
“run_single_rspec_命令”:“zeus rspec{relative_path}:{line_number}”,
“ruby\u单元\u文件夹”:“测试”,
“ruby\u cumber\u文件夹”:“功能”,
“ruby_rspec_文件夹”:“spec”,
“check_for_rbenv”:false,
“check_for_rvm”:正确,
“ruby_use_scratch”:false,
“运行时保存”:正确,
“忽略的目录”:[“.git”、“供应商”、“tmp”],
“隐藏面板”:false,
“在回调之前”:“,
“在_回调之后”:”
}
在命令行中运行以下命令可以验证我的语法:

$ ruby -c test.rb 
  Syntax OK
最后,我尝试了多种方法来解决US-ASCII问题,但都无济于事:

  • -ku
    标志添加到RubyTest设置中的verify命令
  • 在打开sublime之前,在my
    .bash_配置文件中导出RUBYOPT=-Ku
  • 在我的bash配置文件中导出LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8
    ,然后再打开sublime
有没有人能够使用类似的设置来实现这一点


注意:找到了答案(见下文),但如果有人找到更好的解决方案,请感兴趣,谢谢

根据Aaron和Thomas的反馈进行进一步调查,将
ruby\u verify\u命令
ruby-c{file\u name}
更改为
-c{file\u name}
即可

原因是使用
check\u for\u rvm:true
导致运行的命令为:

$ /Users/jladieu/.rvm/bin/rvm-auto-ruby ruby -c test.rb
/Users/jladieu/.rvm/rubies/ruby-1.9.3-p194/bin/ruby:1: invalid multibyte char (US-ASCII)
ruby\u verify\u命令
正确设置为省略
ruby
将导致运行以下命令:

$ /Users/jladieu/.rvm/bin/rvm-auto-ruby -S -c test.rb
Syntax OK

您可以尝试使用
{relative\u path}
而不是
{file\u name}
?Thomas,感谢您的建议--我尝试过了,现在没有将任何内容打印到RubyTest控制台,根本没有发生任何事情(控制台甚至没有显示),因此不确定这是个窍门。实际上
{file\u name}
应该。您可以尝试设置rvm检测,但这只是一个猜测。我指的是
“check\u for\u rvm”:true
设置,但您已经应用了它。最奇怪的是,在添加bundle exec ruby之前,我遇到了这个错误,您已经在上面添加了bundle exec ruby。现在我的测试正常运行了。然而,当我验证语法时,当我将bundle exec ruby添加到verify命令时,我现在得到了ruby:No这样的文件或目录--foobar.rb(LoadError)。我想它正在工作,但是现在找不到文件了?谢谢你发布这个!工作起来很有魅力。