2011-09-12 9 views
18

Mam problem z sprawdzeniem składni skryptów ruby, które mają skrypt/runner rails na swoim shebangu.Jak sprawdzić składnię skryptu ruby, który ma skrypt/runner jako shebang?

Oto dwa przykładowe skrypty i jak reakcje na ruby ​​składni sprawdzanie:

Script hello_world_runner.rb:

#!/usr/bin/env script/runner 
p "Hello world!" 

Script hello_world.rb

#!/usr/bin/env ruby 
p "Hello world!" 

Oto jak próbuję sprawdzić składnię . Pierwsza linia to polecenie, a druga linia to wynik.

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

$ ruby -c hello_world.rb 
SYNTAX OK 

Odpowiedz

5

można przepisać skrypt tak:

Szyny 2:

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

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!" 

Oczywiście, trzeba zdefiniować własną (absolutny) ścieżek lub uruchom ten skrypt z głównego katalogu Rails.

$ ruby -c ./test.rb 
Syntax OK 
12

Można spróbować to

tail -n +2 hellow_world_runner.rb | ruby -c 

Nie idealne, ale powinno działać.

2

Gorąco polecam, abyś zaklasyfikował większość kodu w tych skryptach do swoich podstawowych modeli domen/katalogu lib/etc. Umożliwi to przetestowanie logiki skryptu w ten sam sposób, w jaki testujesz resztę aplikacji (co również kończy się sprawdzaniem składni) i redukuje rzeczywistą zawartość pliku wykonywalnego do linii lub dwóch.

2

Linia poleceń Ruby ma te 2 flagi, które mogą Ci pomóc, używam:

ruby -wc test.rb 
1

Oto trochę oszukiwać:

$ ruby -wc <(cat <(echo ruby) hello_world_runner.rb) 
Syntax OK 

Zasadniczo ruby sprawdzania składni oczekiwać słowo ruby w pierwsza linia (shebang).

Powiązane problemy