2012-02-14 8 views
0

私はrubyについて何も知らないので、誰でもこのスクリプトが何をしているのか説明するのを助けることができますか?ここruby​​ script explanation please

#!/usr/bin/env ruby 
begin 
    require '/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler' 
    # Check if an older version of bundler is installed(this part i understand) 
    $:.each do |path| 
    if path =~ %r'/bundler-0.(\d+)' && $1.to_i < 9 
     err = "Please remove Bundler 0.8 versions." 
     err << "This can be done by running `gem cleanup bundler`." 
     abort(err) 
    end 
    end 
    #it is from here that i dont understand 
    require '/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler/cli' 
    Bundler::CLI.start 
    rescue Bundler::BundlerError => e 
    Bundler.ui.error e.message 
    Bundler.ui.debug e.backtrace.join("\n") 
    exit e.status_code 
    rescue Interrupt => e 
    Bundler.ui.error "\nQuitting..." 
    Bundler.ui.debug e.backtrace.join("\n") 
    exit 1 
    end 

私のIRBテスト:

/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/bin$ irb 
irb(main):001:0> require 'bundler' 
LoadError: no such file to load -- bundler 
from (irb):1:in `require' 
from (irb):1 
from :0 
irb(main):002:0> require 'bundler/cli' 
LoadError: no such file to load -- bundler/cli 
from (irb):2:in `require' 
from (irb):2 
from :0 
irb(main):003:0> Bundler::CLI.start 
NameError: uninitialized constant Bundler 
from (irb):3 
from :0 
irb(main):004:0> 

おかげ

+0

私はエラーが発生します:/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/bin/bundle:14: 'rescue in ':初期化されていない定数Bundler :: BundlerError(NameError) これは、なぜ上記の理由でバンドル業者が開始したくないのですか?おかげで –

+0

'require '/ usr/lib/ruby​​/gems/1.9.1/gems/bundler-1.0.22/lib/bundler''はおそらく失敗している行です。その場所にファイルがありますか? – seb

+0

はいbundle:-rwxr-xr-x 1という実行可能ファイルです。ルートルート699 2012-02-14 09:48 bundle –

答えて

0

バンドラCLIを起動しようとしている、そしてそれはBundlerErrorを取得または中断された場合、それはスタックトレースして終了とを印刷しますステータスコード。 Gemfileを持つディレクトリ内のirbから同じコードを実行し、何が起こるかを見てください。コマンドラインからbundle installを実行すると、どうなるかのように見えます。私はあなたが理解していないかわからないんだけど


$ irb 
ruby-1.9.3-p0 :001 > require 'bundler' 
=> true 
ruby-1.9.3-p0 :002 > require 'bundler/cli' 
=> true 
ruby-1.9.3-p0 :003 > Bundler::CLI.start 
+0

yikes私はこのことをする方法を知らない。それは私のスコープを超えています。私はどうすればよいですか?Gemfileを使ってディレクトリ内のirbから同じコードを実行しますか? –

+0

@charlie_cat編集された回答を参照してください。あなたはGemfileを持つディレクトリに行き、 'irb'と入力し、必要なものを要求し、実行したいコードを入力します。しかし、それが「あなたの範囲を超えている」場合、あなたは何をしているのか、なぜそれを理解するのに時間をかける必要があります。 –

+0

私の主な投稿に私の出力を投稿:) –

0

...あなたはより具体的なことができますか?

しかし、rescueビットは、先にbeginに関する節です。それはあなたが何かを意味する場合、Javaのtry/catchのようなものです。

それは、「beginend間のすべてのものをやってみたが、BundlerErrorが発生した場合、これを行うには、Interruptエラーが発生した場合、それを行う」

はそれがあなたの質問に答えるん意味?