ruby on rails - ¿Cómo verificar la sintaxis del script ruby que tiene script/runner como un shebang?
ruby-on-rails syntax-checking (5)
Tengo problemas para verificar la sintaxis de los scripts de ruby que tienen el script / runner rails en su shebang.
Aquí hay dos scripts de ejemplo y cómo responden a la comprobación de sintaxis de ruby:
Script hello_world_runner.rb
:
#!/usr/bin/env script/runner
p "Hello world!"
Script hello_world.rb
#!/usr/bin/env ruby
p "Hello world!"
Aquí es cómo trato de comprobar la sintaxis. La primera línea es un comando y la segunda línea es una salida.
$ ruby -c hello_world_runner.rb
"Hello world!"
$ ruby -c hello_world.rb
SYNTAX OK
Aquí hay un pequeño truco:
$ ruby -wc <(cat <(echo ruby) hello_world_runner.rb)
Syntax OK
Básicamente el verificador de sintaxis ruby
espera la palabra ruby
en la primera línea (shebang).
La línea de comandos de ruby tiene estos 2 indicadores que pueden ayudarte, uso:
ruby -wc test.rb
Puedes probar esto
tail -n +2 hellow_world_runner.rb | ruby -c
No es ideal pero debería funcionar.
Puedes reescribir tu guión así:
Rieles 2:
#!/usr/bin/env ruby
require File.expand_path(Dir.pwd + ''/config/boot'', __FILE__)
require RAILS_ROOT + ''/config/environment''
p "Hello world!"
Carriles 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!"
Por supuesto, debe definir sus propias rutas (absolutas) o ejecutar este script desde la raíz de Rails.
$ ruby -c ./test.rb
Syntax OK
Recomendaría encarecidamente que incluya la mayoría del código en esos scripts en sus modelos de dominio central / directorio lib / etc. Esto le permitirá probar la lógica del script de la misma manera que prueba el resto de su aplicación (que también terminará verificando la sintaxis) y reducirá el contenido real de su archivo ejecutable a una línea o dos.