- 追加された行はこの色です。
- 削除された行はこの色です。
&tag(Bundler);
*目次 [#b0f3038c]
#contents
*参考情報 [#pc172cbe]
-[[Bundler: The best way to manage a Ruby application's gems:http://gembundler.com/]]…公式
*概要 [#c0e87f56]
-使用するgemsを管理するためのツール
*使用方法 [#s6d488cd]
**簡単にGemfileだけを使う方法 [#g8f67aab]
-Gemfileを用意する。例えばActiveRecordを単独で使用する場合
#pre{{
source 'https://rubygems.org'
gem 'activerecord'
gem 'mysql2'
}}
-インストール。vendor/bundle以下にgemが追加される。
$ bundle install --path vendor/bundle
-使用する。自分のscriptの先頭で以下のようにかいて、ruby hoge.rbのように実行すると、vendor/bundle以下のgemを使ってくれる。
#pre{{
require "rubygems"
require "bundler/setup"
require "active_record"
}}
[[ruby - Are bundle exec and require 'bundler/setup' equivalent? - Stack Overflow:http://stackoverflow.com/questions/11117112/are-bundle-exec-and-require-bundler-setup-equivalent]]に、bundle execとbundle/setupの違いの説明あり。
**アプリのひな形を作成 [#y4d67c77]
-gemとしてインストール可能なアプリのひな形を作る事も出来る(-bで実行ファイルも作ってくれる)
bundle gem sampleapp -b
*Gemfile [#b937dfec]
**requireってなに? [#n1448ca4]
-[[ruby on rails - Bundler: What is the :require => false on the gemfile means? - Stack Overflow:http://stackoverflow.com/questions/4800721/bundler-what-is-the-require-false-on-the-gemfile-means]]によると、require => falseが指定されたものは、ダウンロードはされるが自動的にrequireはされないといいうこと。
-require するときの名前をかえることもできるらしい。
*gemパッケージの作り方 [#gfba42a0]
**ひな形の生成 [#i19d63fd]
***ファイルの生成 [#v665d5d9]
-bundle gemコマンドでつくることができる。
bundle gem demo
-オプションで-bを指定すれば実行ファイルを、-tを指定すればテストファイルを作ってくれる。
-オプションで-bを指定すれば実行ファイルを、-tを指定すればテストファイルを作ってくれる(rspec)。
bundle gem demo -b -t
-後からspecサポートを追加したい場合、次のリンクが参考になる。[[Ruby - bundlerを使ってRSpecを書きつつGemを開発する - Qiita [キータ]:http://qiita.com/kakkunpakkun/items/4271973425e151afbd1a]]
--gemspecにrspecを追加して、bundle install実行。specフォルダとspec_helperをつくるぐらいかな。
***gemspecファイルの編集[#p370c6f9]
-demo.gemspecファイルを編集する。
#pre{{
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'demo/version'
Gem::Specification.new do |spec|
spec.name = "demo"
spec.version = Demo::VERSION
spec.authors = ["src"]
spec.email = ["tanaka@test.net"]
spec.description = %q{TODO: Write a gem description}
spec.summary = %q{TODO: Write a gem summary}
spec.homepage = ""
spec.license = "MIT"
spec.files = `git ls-files`.split($/)
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.3"
spec.add_development_dependency "rake"
end
}}
-gitと連携することが考えられていて、authors、email、filesなどはgitから情報をもってきている。
-descriptionに、TODOやFIXMEが含まれているとビルドできない。
-依存関係の設定は、runtime_dependencyとdevelopment_dependencyが存在。runtimeはgemを動かすのに必要なもの。developmentは開発時に必要なもの(例:RSpec)。
***gemのインストール [#g5e00519]
-pathを指定する。開発時はruntime_dependency/development_dependencyry方法がインストールされる。リリース後はruntime_dependencyだけインストールされる。
bundle install --path .bundle
**パッケージ作成 [#y5b00e61]
-lib/demo.rbに実装を書く。
#pre{{
require "demo/version"
module Demo
def self.hello_world
p "hello world!!"
end
end
}}
**パッケージビルド [#jb2bc76f]
-パッケージをビルドする。rakeコマンドを使用
rake build
-パッケージをインストールする。
gem install pkg/demo-0.0.1.gem
-またはrake installで一発。
-動作確認(irbででも)。
#pre{{
require 'demo'
puts Demo.hello_world
}}
**パッケージリリース(PENDING) [#gc6b5755]
-rake release