Rubyのgemパッケージ管理およびgemソース構築のチュートリアル
RubyGemsを使いこなすために
RubyGemsはRubyのプラグイン管理システムで、Rubyのライブラリのインストールや管理を簡単に行うことができます。すべてのオープンソースパッケージはRubyGems上で見つけることができます。
### 共通ディレクティブ
- gem -v RubyGemsのバージョンを表示します。
- gem update --system RubyGems のバージョンをアップグレードします。
- gem install gem_name プラグインをインストールする。
- gem install -v x.x.x gem_name 指定されたバージョンのプラグインをインストールします。
- gem list インストールされたパッケージの一覧を表示します。
- gem update gem_name プラグインを更新します。
- gem update すべてのプラグインを更新する
- gem uninstall gem_name プラグインを削除する。
また、プラグインをインストールすると、そのプラグインのRDocファイルとriファイルがデフォルトでインストールされます。これらをインストールしたくない場合は、インストール時に --no-ri --no-rdoc パラメータを使用することができます。
gem install gem_name --no-ri --no-rdoc
gem: --no-ri --no-rdoc
RDocとriのファイルをデフォルトでインストールしないようにしました。
### 国内RubyGemsミラー
サーバーが中国にある場合、必要なgemsをインストールするのは並大抵のことではありませんが、幸いなことに、以下のタオバオミラーを利用することが可能になりました。
$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
$ gem sources -l
表示される場合。
*** CURRENT SOURCES ***
http://ruby.taobao.org
これは、変更が成功し、国内のミラーからrugy gemsをインストールできるようになったことを意味します。詳しくは、Rubygemsのミラー
Bundler を使って Ruby Gems を管理している場合は、Gemfile を以下のように修正します。
source 'http://ruby.taobao.org/'
gem 'rails', '3.2.2'
... ... ...
### Ruby Gems のビルドと共有
公式の宣伝文句によると
gem update --system #Update to the latest RubyGems version
gem build foo.gemspec #Build your gem
gem push foo-1.0.0.gem #Deploy your gem instantly
Rubygemsを自作する方法
###簡単な例です。
例としてtopic-0.0.1.gemを作成する。
フォルダを作成する #### 。
.
├── lib
│ └── topico.rb
└── topico.gemspec
注意:libディレクトリにgemと同じ名前のrbファイルがなければなりません。
#### write code libtopico.rb
class Topico
def self.hello
puts "Hello, RubyGems!"
end
end
#### GemSpec ファイル topico.gemspec を編集します。
Gem::Specification.new do |s|
s.name = 'topico'
s.version = '0.0.1'
s.date = '2012-03-11'
s.summary = 'Greeting from Topico'
s.description = 'Topico shows a greeting to RubyGems'
s.authors = 'Author Name'
s.email = '[email protected]'
s.files = ["lib/topico.rb"]
s.homepage = 'http://rubygems.org/gems/topico'
end
ここでは、より一般的な属性のみを掲載しています。
#### gem を生成するために###コンパイルします。
$ gem build topico.gemspec
メッセージが表示されます。
Successfully built RubyGem
Name: topico
Version: 0.0.1
File: topico-0.0.1.gem
コンパイル後、フォルダ構造ツリーを表示することができます。
.
├── lib
│ └── topico.rb
├── topico-0.0.1.gem
└── topico.gemspec
新しく生成されたtopic-0.0.1.gemに注目してください。
#### gemのインストールとテスト
topico-0.0.1.gemのインストール
$ gem install . /topico-0.0.1.gem
のプロンプトが表示されます。
Successfully installed topico-0.0.1
1 gem installed
Installing ri documentation for topico-0.0.1...
Installing RDoc documentation for topico-0.0.1...
irbでirbの使い方をテストしている。
irb(main):001:0> require 'topico'
=> true
irb(main):002:0> Topico.hello
Hello, RubyGems!
=> nil
#### RugyGemsのサイトに##を掲載しました。
まず、RubyGems のユーザー名とパスワードを以下のサイトで設定します。
$ curl -u username https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials
Enter host password for user 'username':
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 56 0 56 0 0 25 0 --:--:-- 0:00:02 --:--:--:-- 144
セットアップ成功後に掲載。
$ gem push topico-0.0.1.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: topico (0.0.1)
リリースが成功したので、みんながあなたのRubygemを使えるようになりました。
### 少し複雑な例です。
ここでは、複数のrubyファイルを整理する方法について説明します。
1. ディレクトリ構造
.
├─ lib
│ ├── ext
│ │ └── calculation.rb
│ └── topico.rb
└── topico.gemspec
2. GemSpecの書き方
s.filesの行で、修正します。
s.files = ["lib/topico.rb", "lib/ext/calculation.rb"]
ジェムビルドをやり直すだけ。
3. Gemに実行ファイルを含める方法
(1) plugins ディレクトリに、bin フォルダを作成します。
実行ファイルを生成し、パーミッションをrunnableに変更します。
$ mkdir bin
$ touch bin/greeting
$ chmod a+x bin/greeting
(2) 実行ファイルの内容を変更する
#! /usr/bin/env ruby
require 'topico'
puts Topico.hello
(3) GemSpecにs.executablesという行を追加するように修正します。
s.executables << 'greeting'
関連
-
最新のCocoaPodsインストールチュートリアル
-
RVMを使ってRuby/Railsのバージョン切り替えを制御する
-
アプレットを置き換えるHTMLスクリプトを記述するRubyの例
-
Rubyのgemパッケージマネージャの使い方とbundlerによる複数バージョンのgemの管理
-
RubyでXMLデータ処理ライブラリREXMLを使うための手引き
-
Rubyの文字列と配列の最大化問題の考察
-
RubyのSimple FactoryパターンとFactory Methodパターンを利用する
-
Ruby on RailsでPing ++プラットフォームでの決済を実現
-
Ruby on RailsにおけるCucumberの活用を解説します。
-
Ruby on Railsにおける国際化の簡単な紹介
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Railsにフィールド暗号化ストレージを実装
-
Mac OS XにRuby実行環境をインストールするための詳細な手順
-
Ruby Hash ハッシュ型 基本操作のメソッド一覧 まとめ
-
RubyのProcクラスとProc.newメソッドの使用法
-
Ruby on Railsで構築するアプリケーションの基本的なディレクトリ構造のまとめ
-
Jekyll静的ウェブサイトのバックエンドエンジンのチュートリアル
-
RubyのXMLデータパースライブラリ「Nokogiri」の高度な使い方
-
Nokogiriパッケージを使ってXML形式のデータを操作するためのRubyチュートリアル
-
Rubyのデザインパターン。プログラミングにおけるシングルトンパターンの活用
-
Rubyのインストールと操作