2016-04-07 9 views
0

私のdevari gemがどこにインストールされているのか不思議で、私はdeviseでダイビングすることができます。これはバンドルインストールを実行するときに宝石がどこにインストールされているのか聞いてくれました。バンドルショー。バンドルインストールを実行すると、宝石はどこにインストールされますか?彼らは私のRubyの上にいるのですか?

だから私は私のレールのアプリディレクトリでこれを実行すると:

bundle show 

Gems included by the bundle: 
    * Ascii85 (1.0.2) 
    * CFPropertyList (2.3.2) 
    * aasm (4.3.0) 
    * actionmailer (3.2.22.2) 
    * actionpack (3.2.22.2) 
    * active_model_serializers (0.8.1) 
    * activeadmin (1.0.0.pre2) 
    * activemodel (3.2.22.2) 
    * activerecord (3.2.22.2) 
    * activeresource (3.2.22.2) 
    * activesupport (3.2.22.2) 
    * activeuuid (0.5.0) 
    * acts-as-taggable-on (3.5.0) 
    * acts_as_tree (2.2.0) 
... 
    * devise (3.5.4) 

私は実行すると:

bundle show devise 

/Users/jeffrey.wan/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/devise-3.5.4 

そのパスとは何ですか?それはどこから来たのですか?

さらに重要な質問は、バンドルインストールを実行するとすべての宝石が実際にインストールされることを意味しますか Ruby?

数値2.1.6と2.1.0は何ですか?

+0

これは、Bundlerがインストールした後のドライブ上のgemへのパスです。はい、ローカルにインストールされます。これがBundlerのポイントです。数字はRubyのバージョンです。なぜ2.1.6と2.1.0が別の質問であるのか。 –

+0

ローカルではどういう意味ですか?とは対照的に...? – Jwan622

答えて

1

宝石のインストールは、Rubyのバージョンによって名前空間になります。したがって、RbenvまたはRVMを使用していて、いくつかの異なるバージョンのRubyがインストールされている場合、gem installを実行すると、現在選択しているRubyのバージョンの宝石のみがインストールされます。

あなたのコメントにお答えするには、宝石を使用したい場合はローカルにインストールする方法に代わるものはありません。 「ローカルで」は「あなたのコンピュータ上で」を意味します。

パスについての質問に答えるために:

/Users/jeffrey.wan/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/devise-3.5.4 
  1. をあなたはrbenvを使用しているので、すべてのあなたのルビーのインストールは、~/.rbenvディレクトリに名前空間されています。
  2. あなたの宝石が2.1.0フォルダを説明するために、そのフォルダ
  3. に設置されているので、あなたは現在、Rubyのバージョン2.1.6を使用している - 宝石が公開されている場合基本的に、彼らは、特定のRubyのバージョンにピンポイントされています。だから、devise gemをruby 2.1.6にインストールするように要求すると、最も近いマッチングdeviseが選択されます(この場合、ruby 2.1.0用の1つのビルド)。

ちなみに、インストールした宝石をデバッグする場合は、bundle showを使用すると便利なことがあります。ソースコードに入り、ブレークポイントを追加することができます。私は頻繁に行うことをお勧めするものではありませんが、古くて部分的に機能的な宝石を使いこなしているときに役立ちます。

ところで、その宝石が「あなたのRuby」にインストールされていると、それはおそらく最良の文言ではないでしょう。宝石をインストールしても、Ruby言語にはパッチは適用されません。プログラムに含めることができるライブラリをインストールするだけです(require経由)。いくつかの宝石は、シェルコマンドも作成します(例えば、rakeのようなもの)。

+0

私はこれまでに受けた最高の答えの一つです。最後の質問...どのようにそのフォルダを見るために知っている必要がありますか? – Jwan622

+0

@ Jwan622それについては全くわかりませんが、[この質問を参照してください](http://stackoverflow.com/questions/9474299/what-are-the-paths-that-require-looks-up-by-default) –

関連する問題