Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Afresh Bundler extra lesson

wtnabe
October 17, 2015

Afresh Bundler extra lesson

「今さらBundler補講」Kanazawa.rb meetup #38

wtnabe

October 17, 2015
Tweet

More Decks by wtnabe

Other Decks in Programming

Transcript

  1. 今さらBundler補講
    @wtnabe
    Kanazawa.rb meetup #38
    2015-10-17 (Sat) at DMM.com Labo Kanazawa div.

    View full-size slide

  2. いきなりまとめ
    利⽤するgemは Gemfile に記述
    gemの依存関係を解決し、必要なgemを
    まとめてインストールできる
    プロジェクト配下にgemをインストー
    ルし、その影響をプロジェクト内に閉じ
    込めることができる

    View full-size slide

  3. Bundler 1.10 以降の
    新機能の話はしません><

    View full-size slide

  4. 依存管理

    View full-size slide


  5. gem A と gem B をインストールしたい
    gem A が gem 1 に依存(ver指定なし)
    gem B が gem 2 と gem 3に依存
    gem 3 が gem 1 のバージョン1.2に依存

    View full-size slide

  6. Gemfile
    gem 'gem A'
    gem 'gem B'

    View full-size slide

  7. 結果
    gem A の最新版
    gem B の最新版
    gem 1 のバージョン1.2
    gem 2 の最新版
    gem 3 の最新版
    が⼊る

    View full-size slide

  8. プロジェクト単位で管理

    View full-size slide

  9. こんなことができる

    View full-size slide

  10. Project1 : Ruby 1.9 + Rails 3.2
    Project2 : Ruby 1.9 + Rails 4.2
    Project3 : Ruby 2.2 + Rails 3.2
    Project4 : Ruby 2.2 + Rails 4.2

    View full-size slide

  11. Rubyのバージョン切り替え
    は別なツールの話ですが、

    View full-size slide

  12. プロジェクトごとに⾃由に
    gemの組み合わせを変更

    View full-size slide

  13. Type
    $ gem install bundler
    $ bundle install --path

    View full-size slide

  14. プロジェクト内でのコマンドの実⾏⽅法
    $ bundle exec foo bar
    binstubsは省略するので各⾃宿題にしてください

    View full-size slide

  15. なぜBundlerが⼤切か

    View full-size slide

  16. 依存gemの影響をプロジェクトに閉じ
    込め、それを⾃動で再現できる
    必要なライブラリを⼿元のコードだけで
    管理できる

    View full-size slide

  17. 他の開発マシンや本番環境
    との違いがなくなる

    View full-size slide

  18. deployの⾃動化が容易に
    もうこれはMUSTでしょ!!

    View full-size slide

  19. 間違いのないdeployを

    View full-size slide

  20. ちなみに

    View full-size slide

  21. Gemfile.lock
    deployに必要
    アプリの場合はreposに⼊れる
    ライブラリの場合はreposに⼊れない

    View full-size slide

  22. BUNDLED_WITH
    in Gemfile.lock
    Bundler 1.10 で⼊った Bundler バージョ
    ントラッキング機能の影響
    結論は全員 1.10.5+ / 1.9.10+ 使え
    Ruby が古い場合は関係ないかも

    View full-size slide

  23. 参考
    Bundler: The best way to manage a Ruby application's gems
    #201 Bundler - RailsCasts
    Ruby - ツールを使いたいだけの⼈のための bundler ⼊⾨ (例:
    vagrant + veewee) - Qiita
    Rubyそのもの
    Rubyist Magazine - Ruby の歩き⽅

    View full-size slide

  24. Bundler 1.10+
    Use 1.10.5+ / 1.9.10+
    Bundler: Version 1.10 released
    Ruby - Bundler バージョン1.10がリリースされました(翻訳) -
    Qiita
    Ruby - BUNDLED WITH で Gemfile.lock が更新されてしまう件 -
    Qiita

    View full-size slide