Ответ 1
Вы можете попробовать это
tail -n +2 hellow_world_runner.rb | ruby -c
Не идеален, но должен работать.
У меня проблемы с проверкой синтаксиса рубиновых скриптов с рельсами script/runner на его shebang.
Вот два примера сценариев и ответы на проверку синтаксиса 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!"
Вот как я пытаюсь проверить синтаксис. Первая строка - это команда, а вторая строка - выход.
$ ruby -c hello_world_runner.rb
"Hello world!"
$ ruby -c hello_world.rb
SYNTAX OK
Вы можете попробовать это
tail -n +2 hellow_world_runner.rb | ruby -c
Не идеален, но должен работать.
Вы можете переписать свой script следующим образом:
Рельсы 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!"
Конечно, вам нужно определить свои собственные (абсолютные) пути или запустить этот script из корня Rails.
$ ruby -c ./test.rb
Syntax OK
Я бы очень рекомендовал, чтобы вы определили большую часть кода в этих сценариях в своих основных моделях домена/каталог lib/etc. Это позволит вам протестировать логику script так же, как вы тестируете остальную часть вашего приложения (которая также завершит проверку синтаксиса) и уменьшит фактическое содержимое исполняемого файла до строки или двух.
В командной строке ruby есть два флага, которые могут вам помочь, я использую:
ruby -wc test.rb
Вот немного обманывает:
$ ruby -wc <(cat <(echo ruby) hello_world_runner.rb)
Syntax OK
В основном синтаксис проверки ruby
ожидает слово ruby
в первой строке (shebang).