ruby-on-rails ruby shebang syntax-checking

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.