0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby設定2 

Last updated at Posted at 2020-10-28

gemとは?

  • 決まったフォーマットで提供されるRuby言語用のライブラリを「gem」と呼びます。
  • 「gem」には例えば以下のようなものがある。
    • Rails(Webフレームワーク)
    • Sinatra(Webフレームワーク)
    • omniauth(認証機能)
    • unicorn(アプリケーションサーバ)
    • Rspec(テストフレームワーク)
      ...etc
  • PerlでいうCPAN、phpでいうpear等にあたる

Rubygemsとは

  • yumやaptと似た、gem専用のパッケージ管理システム。
  • 以下サイトにてgemの情報公開、提供を行っている。
    https://rubygems.org/

Bundlerとはなんぞや

  • gemは以下のように個別に手動インストールする事が可能です。
    • gem install "sinatra"
    • gem install "unicorn"
    • gem install "omniauth"
  • しかし、様々なgem(ライブラリ)を組み合わせて使っていると「gemAのver1とgemBのVer2はうまく動くけど、最新バージョン同士だとうまく動かない。」という互換性の問題が出てくる場合があります。
  • また、複数人、複数環境で開発を行う場合は、各環境で使うライブラリの名前、バージョンを合わせる必要があります。
  • こういった場合に、gem同士の互換性を保ちながら各gemの導入、管理を行ってくれるのがBundlerです。
  • Gemfileというファイルにインストールしたいgemを記述し、それを元にbundlerを使ってインストールを行います。
  • bundler本体以外のgemは基本的にbundler経由でインストールを行うのがおすすめです。

Bundlerのインストールの仕方

  • Bundlerのインストール
    • Bundlerもgemの1つです。手動ダウンロードしましょう
      • gem install bundler
    • 導入後はバージョンが表示される事を確認してください。
      • bundler -v

Bundlerの使い方

  1. Gemfileの作成
    • bundle init
    • 上記実行するとGemfileという雛形ファイルが作成されます
  2. 使用したいgemをGemfileに記述する
    • Gemfileを編集する
      • vi Gemfile
    • Gemfileの先頭に、インストール元はrubygemsですよ、と宣言を行います。
      • source "rubygems"
    • 続けてインストールしたいgemを記述します
      • gem "sinatra"
      • gem "unicorn"
      • gem "omniauth"
    • gemの指定の際に、バージョンの指定も可能です
      • gem 'rails', "~> 4.2.4"
  3. Gemfileにリスト化したgemを一括インストール
    • 一括インストール
      • bundle install --path vendor/bundle
    • --pathでインストール先を指定可能。一度でも--path指定でインストールしたら、次回以降はpath指定無しでbundle installを行っても同じpathが選択されます。
    • この時、インストールしたgemの名前とバージョンを記載した「gemfile.lock」というファイルが作成されます。
  4. インストールしたgemをプログラムソース上でロード
    • まずソース上でrubygemsをrequireします。
      • require "rubygems"
    • 以下のように記述するとインストールした内容からrequireを行うように(指定無しだとシステム最新のgemを使ってしまいます)
      • require "bundler/setup"
  5. プログラムを実行する際は、最初にbundle execを実行します。(指定無しだと互換性を考慮せずにシステム最新のgemを使ってしまう)
    • bundle exec ruby foo.rb

参考

GemコマンドとBundlerの基礎 - BlueTechNote

Gemコマンドを使用

$ gem install
$ gem update
$ gem uninstall

bundler

  • Bundler をインストールする
  • Gemfile にインストールするGem を書く
  • bundle installコマンドでインストールする
  • bundle updateコマンドでGemをバージョンアップする
- Bundler をインストールする
(m・_・bp) 17:50 ~/Desktop/vsnote2.0/ruby % gem install bundler
Fetching bundler-2.1.4.gem
Successfully installed bundler-2.1.4
Parsing documentation for bundler-2.1.4
Installing ri documentation for bundler-2.1.4
Done installing documentation for bundler after 2 seconds
1 gem installed

- Gemfile にインストールするGem を書く

(m・_・bp) 17:51 ~/Desktop/vsnote2.0/ruby % bundle init
Writing new Gemfile to /Users/uekiyoshihiro/Desktop/vsnote2.0/ruby/Gemfile

- bundle installコマンドでインストールする

(m・_・bp) 17:53 ~/Desktop/vsnote2.0/ruby % bundle install
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using bundler 2.1.4
Fetching coderay 1.1.2
Installing coderay 1.1.2
Fetching method_source 1.0.0
Installing method_source 1.0.0
Fetching pry 0.13.1
Installing pry 0.13.1
Bundle complete! 1 Gemfile dependency, 4 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

- bundle updateコマンドでGemをバージョンアップする

(m・_・bp) 17:58 ~/Desktop/vsnote2.0/ruby % bundle update
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using bundler 2.1.4
Using coderay 1.1.2
Using method_source 1.0.0
Using pry 0.13.1
Bundle updated!

よく使うコマンド集

$ bundle init #Gemfileを生成
$ bundle install	#Gemfileに書かれたgemパッケージをインストール
$ bundle exec	#Bundlerでインストールされたgemパッケージを使用してコマンドを実行
$ bundle list	#インストール済みのgemパッケージの一覧を表示
$ bundle update	#インストール済みのgemパッケージのバージョンを更新


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?