Ruby on Rails
宝石類
サーチ…
備考
Gemfileのドキュメント
成長が予想されるプロジェクトの場合は、 Gemfile
コメントを追加することをおGemfile
ます。そうすれば、大規模な設定でも、名前が自明でなくても2年前に追加したとしても、各宝石が何をするのかは分かります。
これは、特定のバージョンを選択した理由を覚えておいて、後でバージョン要件を再評価するのにも役立ちます。
例:
# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'
宝石とは何ですか?
宝石は、プログラミング言語のルビーのプラグインまたは拡張機能に相当します。
まさにレールでさえあれば、宝石だけではありません。多くの宝石は、レールや他の宝石(それらは前記の宝石に依存している)または独立して建てられています。
あなたのRailsプロジェクト
Gemfile
あなたのRailsプロジェクトには、 Gemfile
というファイルがあります。ここでは、プロジェクトに組み込んで使用する宝石を追加できます。一度追加すると、 bundler
を使用して宝石をインストールする必要があります(Bundlerセクションを参照)。
Gemfile.lock
これを済ませたら、あなたのGemfile.lock
は新しく追加された宝石とその依存関係で更新されます。このファイルは、使用している宝石をロックして、そのファイルで宣言されている特定のバージョンを使用するようにします。
GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)
この例は、宝石devise
です。 Gemfile.lock
、バージョン4.0.3
が宣言され、指定されたバージョンを使用する他のマシンまたはGemfile.lock
サーバーにプロジェクトをインストールするときに通知されます。
開発
1人の人、グループ、またはコミュニティ全体が宝石を扱い、維持しています。完了した作業は、通常、特定のissues
が修正された後、またはfeatures
が追加された後にリリースされます。
通常、リリースはSemantic Versioning 2.0.0の原則に従います。
バンドラー
宝石を扱い、管理する最も簡単な方法は、 bundler
を使うことです。 Bundlerは、 Bowerに匹敵するパッケージマネージャです。
バンドラーを使用するには、まずそれをインストールする必要があります。
gem install bundler
Gemfile
して実行するGemfile
で、 Gemfile
宝石を追加して実行するだけです
bundle
あなたの端末で。これにより、新しく追加された宝石がプロジェクトにインストールされます。問題が発生した場合は、端末にプロンプトが表示されます。
より詳細な情報が必要な場合は、 ドキュメントをご覧ください。
Gemfiles
まず、gemfilesには、RubyGemsサーバーのURLの形式で少なくとも1つのソースが必要です。
bundle init
実行して、デフォルトのrubygems.orgソースを持つGemfileを生成しbundle init
。 httpsを使用すると、サーバーへの接続がSSLで検証されます。
source 'https://rubygems.org'
次に、必要なバージョン番号を含む宝石を宣言します。
gem 'rails', '4.2.6'
gem 'rack', '>=1.1'
gem 'puma', '~>3.0'
> = 1.0のようなほとんどのバージョン指定子は自明です。指定子〜は特別な意味を持ちます。 〜2.0.3は> 2.0.3および<2.1と同じです。 〜2.1は> 2.1および<3.0と同一である。 〜2.2.betaは、2.2.beta.12のようなプレリリース版と一致する。
Gitリポジトリは、リポジトリに1つまたは複数の有効な宝石が含まれている限り、有効な宝石源でもあります。 :tag
、 :branch
、または:ref
を使用してチェックアウトするものを指定します。デフォルトはmaster
ブランチです。
gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'
ファイルシステムからアンパックされたgemを直接使用したい場合は、:pathオプションをgemのファイルを含むパスに設定するだけです。
gem 'extracted_library', :path => './vendor/extracted_library'
依存関係はグループに配置できます。グループは、インストール時に( --without
を使用して)無視することも、一度にすべてを必要とすることもできます( Bundler.require
を使用)。
gem 'rails_12factor', group: :production
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'dotenv-rails'
end
あなたはとGemfileにルビーの必要なバージョンを指定することができruby
。 Gemfileが別のRubyバージョンにロードされている場合、Bundlerは説明付きで例外を発生させます。
ruby '2.3.1'
宝石類
RVM(Ruby Version Manager)
を使用しているgemset
、各プロジェクトにgemset
を使用するgemset
をお勧めします。 gemset
は、宝石をお互いから隔離するために使うことができる容器です。プロジェクトごとにgemset
作成すると、他のすべてのプロジェクトを壊すことなく、あるプロジェクトの宝石(および宝石のバージョン)を変更することができます。各プロジェクトでは、自分の宝石だけを心配する必要があります。
RVM
は、ルビインタープリタごとに@global gemset
提供します(> = 0.1.8)。与えられたルビーの@global gemset
インストールする宝石は、そのルビと関連して作成した他のすべての宝石セットで利用できます。これは、すべてのプロジェクトが特定のRubyインタプリタインストール用にインストールされた同じ宝石を共有できるようにするための良い方法です。
宝石セットの作成
すでにruby-2.3.1
インストールされており、次のコマンドを使用して選択したとします。
rvm use ruby-2.3.1
今このルビーバージョンのgemsetを作成する:
rvm gemset create new_gemset
new_gemset
はnew_gemset
の名前です。 Ruby版で利用可能な宝石のリストを見るには:
rvm gemset list
すべてのルビーバージョンの宝石をリストする:
rvm gemset list_all
リストからgemsetを使用する( new_gemset
は使用したいgemsetであると仮定します)。
rvm gemset use new_gemset
他のルビーバージョンに移行したい場合は、gemsetでルビバージョンを指定することもできます:
rvm use ruby-2.1.1@new_gemset
特定のルビーバージョンのデフォルトのgemsetを指定する:
rvm use 2.1.1@new_gemset --default
インストールされているすべての宝石をジェムセットから取り除くには、以下の方法で空にすることができます:
rvm gemset empty new_gemset
1つのルビーから別のルビーにgemsetをコピーするには、次のようにします。
rvm gemset copy 2.1.1@rails4 2.1.2@rails4
gemsetを削除するには:
rvm gemset delete new_gemset
現在のgemset名を表示するには:
rvm gemset name
グローバルgemsetに宝石をインストールするには:
rvm @global do gem install ...
Rubyインストール時のGemsetセットの初期化
新しいルビーをインストールすると、RVMは2つのジェムセット(デフォルトの空のジェムセットとグローバルジェムセット)を作成するだけでなく、ユーザー編集可能ファイルのセットを使用してインストールする宝石を決定します。
~/.rvm/gemsets
で作業すると、rvmはインストールされているルビ文字列に基づいてツリー階層を使ってglobal.gems
とdefault.gems
を検索します。 ree-1.8.7-p2010.02
の例を使用して、rvmは次のファイルをチェックします(そしてそこからインポートします):
~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems
たとえば、 ~/.rvm/gemsets/global.gems
を次の2行を追加して編集したとします。
bundler
awesome_print
あなたが新しいルビーをインストールするたびに、これらの2つの宝石がグローバルジェムセットにインストールされます。 default.gems
およびglobal.gems
ファイルは、通常、rvmの更新中に上書きされます。