Ruby on rails 如何检查将script/runner作为shebang的ruby脚本的语法?
我在检查包含rails脚本/runner的ruby脚本的语法时遇到了问题 以下是两个示例脚本以及它们如何响应ruby语法检查: 脚本Ruby on rails 如何检查将script/runner作为shebang的ruby脚本的语法?,ruby-on-rails,ruby,shebang,syntax-checking,Ruby On Rails,Ruby,Shebang,Syntax Checking,我在检查包含rails脚本/runner的ruby脚本的语法时遇到了问题 以下是两个示例脚本以及它们如何响应ruby语法检查: 脚本hello\u world\u runner.rb: #!/usr/bin/env script/runner p "Hello world!" 脚本hello\u world.rb #!/usr/bin/env ruby p "Hello world!" 下面是我如何检查语法的。第一行是命令,第二行是输出 $ ruby -c hello_world_runne
hello\u world\u runner.rb
:
#!/usr/bin/env script/runner
p "Hello world!"
脚本hello\u world.rb
#!/usr/bin/env ruby
p "Hello world!"
下面是我如何检查语法的。第一行是命令,第二行是输出
$ ruby -c hello_world_runner.rb
"Hello world!"
$ ruby -c hello_world.rb
SYNTAX OK
您可以像这样重写脚本: 轨道2:
#!/usr/bin/env ruby
require File.expand_path(Dir.pwd + '/config/boot', __FILE__)
require RAILS_ROOT + '/config/environment'
p "Hello world!"
轨道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!"
当然,您需要定义自己的(绝对)路径或从Rails根目录运行此脚本
$ ruby -c ./test.rb
Syntax OK
你可以试试这个
tail -n +2 hellow_world_runner.rb | ruby -c
不理想,但应该可以工作。我强烈建议您将这些脚本中的大部分代码考虑到核心域模型/lib目录等中。这将允许您以与测试应用程序其余部分相同的方式测试脚本逻辑(这也将检查语法)并将可执行文件的实际内容减少到一两行。ruby命令行有以下两个标志,我使用:
ruby -wc test.rb
这里有一个小骗局:
$ ruby -wc <(cat <(echo ruby) hello_world_runner.rb)
Syntax OK
$ruby-wc