Ruby Language
宝石の使用
サーチ…
ルビーの宝石をインストールする
このガイドはRubyがすでにインストールされていることを前提としています。 Ruby < 1.9
を使用している場合は、 RubyGemを手動でインストールする必要があります 。
ruby gemをインストールするには、次のコマンドを入力します。
gem install [gemname]
gem依存関係のリストを持つプロジェクトで作業している場合、これらはGemfile
という名前のファイルにリストされます。プロジェクトに新しいgemをインストールするには、 Gemfile
次のコード行を追加します。
gem 'gemname'
このGemfile
は、プロジェクトが必要とする依存関係をインストールするためにBundler gemによって使用されますが、実行してBundlerを最初にインストールする必要があります。
gem install bundler
ファイルを保存し、次のコマンドを実行します。
bundle install
バージョンの指定
バージョン番号は、次のような-v
フラグを付けて、liveコマンドで指定することができます。
gem install gemname -v 3.14
Gemfile
バージョン番号を指定するときは、いくつかのオプションがあります:
- バージョン指定なし(
gem 'gemname')
-Gemfile
内の他のgemと互換性のある最新バージョンをインストールします。 - 厳密に指定されたバージョン(
gem 'gemname', '3.14'
) - バージョン3.14
のみをインストールしようとします(これがGemfile
内の他のgemと互換性がない場合は失敗しGemfile
)。 - 楽観的な最小バージョン番号(
gem 'gemname', '>=3.14'
) -Gemfile
内の他のgemと互換性のある最新バージョンをインストールしようとしますが、3.14
以上のバージョンが互換性がない場合は失敗します。演算子>
を使用することもできます。 - 悲観的な最小バージョン番号(
gem 'gemname', '~>3.14'
) -gem 'gemname', '>=3.14', '<4'
を使用することと機能的に同等です。言い換えれば、 最終期間以降の数字だけが増加することが許される。
ベストプラクティスとしては、 rbenvやrvmのようなRubyのバージョン管理ライブラリの1つを使いたいかもしれません。これらのライブラリを使用して、異なるバージョンのRubyランタイムと宝石をインストールすることができます。したがって、プロジェクトで作業する場合、これは、ほとんどのプロジェクトが既知のRubyバージョンに対してコード化されているため、特に便利です。
github / filesystemからのgemインストール
githubやファイルシステムからgemをインストールすることができます。もしgemがgitから、あるいは何らかの形でファイルシステム上でチェックアウトされていれば、それを使ってインストールすることができます
gem install --local path_to_gem/filename.gem
githubからgemをインストールする。 githubからソースをダウンロードする
mkdir newgem
cd newgem
git clone https://urltogem.git
宝石を作る
gem build GEMNAME.gemspec
gem install gemname-version.gem
必要なgemがコード内からインストールされているかどうかを確認する
コード内から必要な宝石がインストールされているかどうかを確認するには、次のものを使用します(nokogiriを例として使用します)。
begin
found_gem = Gem::Specification.find_by_name('nokogiri')
require 'nokogiri'
....
<the rest of your code>
rescue Gem::LoadError
end
ただし、これをコード内の機能の設定に使用できる関数にさらに拡張することができます。
def gem_installed?(gem_name)
found_gem = false
begin
found_gem = Gem::Specification.find_by_name(gem_name)
rescue Gem::LoadError
return false
else
return true
end
end
これで、必要なgemがインストールされているかどうかを確認し、エラーメッセージを表示できます。
if gem_installed?('nokogiri')
require 'nokogiri'
else
printf "nokogiri gem required\n"
exit 1
end
または
if gem_installed?('nokogiri')
require 'nokogiri'
else
require 'REXML'
end
GemfileとBundlerの使用
Gemfile
は、アプリケーションの依存関係を整理するための標準的な方法です。基本的なGemfileは次のようになります:
source 'https://rubygems.org' gem 'rack' gem 'sinatra' gem 'uglifier'
以下のように、あなたが望む宝石のバージョンを指定することができます:
# Match except on point release. Use only 1.5.X gem 'rack', '~>1.5.2' # Use a specific version. gem 'sinatra', '1.4.7' # Use at least a version or anything greater. gem 'uglifier', '>= 1.3.0'
git repoから宝石をまっすぐに引き出すこともできます:
# pull a gem from github gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git' # you can specify a sha gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', sha: '30d4fb468fd1d6373f82127d845b153f17b54c51' # you can also specify a branch, though this is often unsafe gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', branch: 'master'
また、使用されているものに応じて宝石をグループ化することもできます。例えば:
group :development, :test do # This gem is only available in dev and test, not production. gem 'byebug' end
アプリケーションを複数のプラットフォームで実行可能にする必要がある場合、特定のプラットフォームを実行するプラットフォームを指定できます。例えば:
platform :jruby do gem 'activerecord-jdbc-adapter' gem 'jdbc-postgres' end platform :ruby do gem 'pg' end
Gemfileから全てのgemをインストールするには:
gem install bundler bundle install
バンドル/インライン(バンドラv1.10以降)
時々あなたは誰かのためのスクリプトを作成する必要がありますが、彼は彼のマシンに何を持っているか分からない。あなたのスクリプトに必要なものはすべてありますか?心配無用。 Bundlerには素晴らしい機能があります。
これはgemfile
メソッドを提供し、スクリプトが実行される前に、必要なすべての宝石をダウンロードして必要とします。少しの例:
require 'bundler/inline' #require only what you need
#Start the bundler and in it use the syntax you are already familiar with
gemfile(true) do
source 'https://rubygems.org'
gem 'nokogiri', '~> 1.6.8.1'
gem 'ruby-graphviz'
end