Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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
Ruby on rails Textmate的语法检查规则在哪里?_Ruby On Rails_Ruby_Syntax_Textmate - Fatal编程技术网

Ruby on rails Textmate的语法检查规则在哪里?

Ruby on rails Textmate的语法检查规则在哪里?,ruby-on-rails,ruby,syntax,textmate,Ruby On Rails,Ruby,Syntax,Textmate,Ruby 1.9.2、Rails 3+应用程序 我正在lambda块中设置默认值: scope :order_by, lambda { |field, dir='ASC'| ... TextMate每次保存时都告诉我此语法无效。更令人恼火的是,它把我带到了有问题的那一行,当我在文件的较低位置工作时,这是一个麻烦,它会把我带到那里 当然,Ruby会运行文件a-ok 我在哪里可以找到语法规则以便修改它们?或者它是通过Ruby传递的?看看Bundle编辑器(在Bundles菜单下)——您的案例中的R

Ruby 1.9.2、Rails 3+应用程序

我正在lambda块中设置默认值:

scope :order_by, lambda { |field, dir='ASC'|
...
TextMate每次保存时都告诉我此语法无效。更令人恼火的是,它把我带到了有问题的那一行,当我在文件的较低位置工作时,这是一个麻烦,它会把我带到那里

当然,Ruby会运行文件a-ok


我在哪里可以找到语法规则以便修改它们?或者它是通过Ruby传递的?

看看Bundle编辑器(在Bundles菜单下)——您的案例中的Ruby或RubyonRails包。Bundle定义命令(如“Validate Syntax”)、代码段、宏、语法等。

文件“Validate and Save.tmCommand”中的Ruby Bundle中也有这一行:
结果=
{compiler\u ruby}-wc“$TM\u FILEPATH”2&;1

-w打开警告。
移除“w”对我来说是个好办法:

结果=
{compiler_ruby}-c“$TM_FILEPATH”2&;1

更改任何捆绑包后,您需要在textmate中运行:
捆绑包->捆绑包编辑器->重新加载捆绑包

p.S.捆绑包可在此处找到:

~/Library/Application-Support/TextMate/Bundles

我可以通过更改Ruby>Validate和Save命令来解决这个问题

#!/usr/bin/env ruby

require ENV['TM_SUPPORT_PATH'] + '/lib/textmate'

#compiler_ruby = `which rbx`.strip
#if compiler_ruby.length == 0
  compiler_ruby = ENV['TM_RUBY'] || `which ruby`.strip
#end

result = `#{compiler_ruby} -wc "$TM_FILEPATH" 2>&1`

scopes = ENV['TM_SCOPE'].split
if scopes.include? 'source.ruby.rspec.cucumber.steps'
  result.gsub!(/^.+warning: ambiguous first argument; put parentheses or even spaces$/, '')
end

if result =~ /:(\d+):/
  print result
  TextMate.go_to :line => $1
end
注释掉5、6和8会强制命令每次都使用TM_RUBY-确保您在Preferences>Advanced>Shell Variables中设置了此选项


希望有帮助?

TextMate.go\u to:line=>$1如果result=~/-:(\d+):是Ruby捆绑包中的罪魁祸首,请验证语法命令。谢谢这个快速修复对我很有帮助,但是没有办法更改代码段以便每次都加载正确的Ruby版本吗?我使用不同的Ruby版本,所以我真的不想设置特定于textmate的Ruby版本。但是,不确定如何调用RVM来获取此项目的当前版本。请将TM_RUBY设置为
/Users/YourName/.RVM/bin/RVM auto RUBY
-然后当TM调用TM_RUBY时,它将自动成为当前范围内的RUBY,或者调用
$哪个RVM auto RUBY
来获取RVM环境的
RVM auto RUBY