20

シバンに rails script/runner がある ruby​​ スクリプトの構文をチェックするのに問題があります。

2 つのスクリプト例と、それらが Ruby 構文チェックにどのように応答するかを以下に示します。

スクリプトhello_world_runner.rb:

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

脚本hello_world.rb

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

構文を確認する方法を次に示します。1 行目がコマンドで、2 行目が出力です。

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

$ ruby -c hello_world.rb 
SYNTAX OK
4

5 に答える 5

14

これを試すことができます

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

理想的ではありませんが、うまくいくはずです。

于 2011-11-08T11:20:31.510 に答える
7

ruby のコマンド ラインには、次の 2 つのフラグが用意されています。

ruby -wc test.rb
于 2014-06-19T09:27:57.080 に答える
6

次のようにスクリプトを書き直すことができます。

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

もちろん、独自の (絶対) パスを定義するか、Rails ルートからこのスクリプトを実行する必要があります。

$ ruby -c ./test.rb 
Syntax OK
于 2011-09-12T13:38:42.023 に答える
3

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

于 2011-12-07T18:14:12.560 に答える
2

ここにちょっとしたチートがあります:

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

基本的にruby、構文チェッカーrubyは最初の行 (シバン) の単語を期待します。

于 2016-06-10T18:10:42.463 に答える