Ruby on rails Textmate的语法检查规则在哪里?
Ruby 1.9.2、Rails 3+应用程序 我正在lambda块中设置默认值: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
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