2011-09-12 3 views
18

私は、そのシバン上にrailsスクリプト/ランナーを持つrubyスクリプトの構文をチェックするのに問題があります。ここでスクリプト/ランナーをシバンとして持つrubyスクリプトの構文をチェックするには?

は、2つのサンプルスクリプトがあり、どのように応答構文チェックをルビーする:

スクリプトhello_world_runner.rb

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

スクリプトhello_world.rb

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

ここでは、私は構文をチェックしてみてください方法です。最初の行はコマンドであり、2行目は出力です。

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

$ ruby -c hello_world.rb 
SYNTAX OK 

答えて

5

あなたがこのようにスクリプトを書き換えることができます。

レール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!" 

、あなたは絶対的な(独自に定義する必要があります)パスを使用するか、Railsルートからこのスクリプトを実行します。

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

あなたはこの

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

ない理想的に試すことができますが、動作するはずです。

2

これらのスクリプトのコードの大部分をコアドメインモデル/ libディレクトリ/ etcに入れることを強くお勧めします。これにより、アプリケーションの残りの部分をテストするのと同じようにスクリプトロジックをテストすることができます(シンタックスのチェックも終わります)。実行可能ファイルの実際の内容を1行または2行に減らします。

2

ルビーコマンドラインは私が使用して、あなたを助けるかもしれないこれらの2つのフラグがあります。ここでは

ruby -wc test.rb 
1

は少しチートです:

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

基本的にruby構文チェッカーはでruby言葉を期待一行目(シバン)。