如何检查有脚本/跑步者作为shebang的ruby脚本的语法?

Jon*_*oni 18 ruby ruby-on-rails syntax-checking shebang

我在检查rubb脚本的语法时遇到问题,这些脚本在其shebang上有rails script/runner.

以下是两个示例脚本以及它们如何响应ruby语法检查:

脚本hello_world_runner.rb:

#!/usr/bin/env script/runner
p "Hello world!"
Run Code Online (Sandbox Code Playgroud)

脚本 hello_world.rb

#!/usr/bin/env ruby
p "Hello world!"
Run Code Online (Sandbox Code Playgroud)

以下是我尝试检查语法的方法.第一行是命令,第二行是输出.

$ ruby -c hello_world_runner.rb 
"Hello world!"

$ ruby -c hello_world.rb 
SYNTAX OK
Run Code Online (Sandbox Code Playgroud)

mb1*_*b14 13

你可以试试这个

tail -n +2 hellow_world_runner.rb | ruby -c
Run Code Online (Sandbox Code Playgroud)

不理想,但应该工作.


Era*_*oni 7

ruby 命令行有这 2 个可能对您有所帮助的标志,我使用:

ruby -wc test.rb
Run Code Online (Sandbox Code Playgroud)


Ole*_*nyk 5

您可以像这样重写脚本:

Rails 2:

#!/usr/bin/env ruby
require File.expand_path(Dir.pwd + '/config/boot',  __FILE__)
require RAILS_ROOT + '/config/environment'
p "Hello world!"
Run Code Online (Sandbox Code Playgroud)

Rails 3:

#!/usr/bin/env ruby
require File.expand_path(Dir.pwd + '/config/boot',  __FILE__)
require File.expand_path(Dir.pwd + '/config/application',  __FILE__)
Rails.application.require_environment!
p "Hello world!"
Run Code Online (Sandbox Code Playgroud)

当然,您需要定义自己的(绝对)路径或从Rails根目录运行此脚本.

$ ruby -c ./test.rb 
Syntax OK
Run Code Online (Sandbox Code Playgroud)