Bundler kanazawa.rb meetup #2 2012/09/19

1,289 views

Published on

Bundler kanazawa.rb meetup #2
2012/09/19

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,289
On SlideShare
0
From Embeds
0
Number of Embeds
141
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Bundler kanazawa.rb meetup #2 2012/09/19

    1. 1. Bundler Next SeeD 黒川 仁 (@krhitoshi)2012/09/22 Kanazawa.rb meetup #2 @ITビジネスプラザ武蔵
    2. 2. 自己紹介黒川 仁 (@krhitoshi)プログラマ/サーバエンジニアNext SeeD (個人事業)http://www.nextseed.jp/黒川仁の文具堂ブログ三昧http://blog.bungu-do.jp/
    3. 3. iOSアプリ開発祝日カレンダー iPhone170円 約360DL冥想(座禅)タイマー iPhone/iPad (英語対応)無料 約5,000DLiPad App ヘルスケア/フィットネス最高18位(日本) 最高122位(アメリカ)i便所 ジョークアプリTrychestと共同開発約3万5,000DL (2011年8月)iPhone App ライフスタイル 最高9位
    4. 4. 最初にご質問普段、Rubyを使っている人? Rubyを触ったことある人?Rails触ったことある人?普段、gitを使っている人? subversionは?githubを使ってる人?
    5. 5. 今日のお話bundler, gemについてgemはコマンドラインツールの配布に便利bundle gemでgemを自作しようまとめ
    6. 6. bundler, gemについて∼ Redmineを例に ∼
    7. 7. RubyGems(gem)とはRubyのライブラリ、ツールのパッケージを管理(公開)するツールRubyGems.orggem コマンドgem install railsgem install jsonrequire jsonPerl: CPAN, PHP: PEAR RubyGems.org
    8. 8. railsだけでこれだけのバー ジョンがある/Users/hitoshi% gem list rails -ra*** REMOTE GEMS ***rails (3.2.8, 3.2.7, 3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2,3.2.1, 3.2.0, 3.1.8, 3.1.7, 3.1.6, 3.1.5, 3.1.4, 3.1.3,3.1.2, 3.1.1, 3.1.0, 3.0.17, 3.0.16, 3.0.15, 3.0.14,3.0.13, 3.0.12, 3.0.11, 3.0.10, 3.0.9, 3.0.8, 3.0.7,3.0.6, 3.0.5, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0,2.3.14, 2.3.12, 2.3.11, 2.3.10, 2.3.9, 2.3.8, 2.3.7,2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.3, 2.2.2, 2.1.2,2.1.1, 2.1.0, 2.0.5, 2.0.4, 2.0.2, 2.0.1, 2.0.0, 1.2.6,1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.6, 1.1.5,1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.0, 0.14.4,0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 0.12.1, 0.12.0,0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4,0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.5, 0.8.0)
    9. 9. アプリとgemのバージョンアプリによって必要なgemのバージョンが違うアプリ配布側はバージョンの指定ユーザは指定されたバージョンをインストール
    10. 10. Bundlerとは環境でも動作するようにアプリケーションが使用するgemのバージョンを面倒みてくれるツールRails 3.0.0リリース時にBundler 1.0.0リリースgem install bundlerGemfileに指定されたgemがインストールされてない場合はアプリケーションが動作しない
    11. 11. Redmineの例Ruby on Railsで作られたプロジェクト管理システム (バグトラッキングシステム) Rubyの開発にも利用されている http://bugs.ruby-lang.org/
    12. 12. Redmineの例現行バージョン 2.1.0 (2012/09/22 現在)1.4以降はBundler対応1.4系 Gemfile有り (Bundler対応) Ruby 1.8.7, 1.9.2 or 1.9.3 Ruby on Rails 2.3.141.3系 Gemfile無し Ruby 1.8.6 or 1.8.7 Ruby on Rails 2.3.14
    13. 13. RedmineのインストールRedmine 1.3をCentOS 6にインストールする手順Redmine 2.1をCentOS 6.3にインストールする手順 Redmine.jp
    14. 14. Redmine 1.3
    15. 15. Redmine 2.1
    16. 16. gemについてはあまり気にする必要がなくなったアプリ配布側:「bundle installしてね」 必要なgemとそのバージョンの指定が必要ない (Gemfileに書いてある)ユーザ側  :「bundle installするよ」 必要なgemとそのバージョンのインストール作業が簡単
    17. 17. bundlerについてその他bundle checkbundle updatebundle install --path vendor/bundlerbundle exec (Gemfileで指定されたgemで実行)Rails3だけでなくRails2, Sinatraへの対応 http://gembundler.com/
    18. 18. 昔は大変だったけどBundlerで楽になったよね
    19. 19. gemはコマンドラインツー ルの配布に便利
    20. 20. サーバ管理ツールRuby(Perl)スクリプトでサーバ管理ツール Apacheバーチャルドメイン追加・削除 Postfixバーチャルドメイン追加・削除管理しているサーバにそれぞれインストール 昔作ったツールでPerlと混在 バージョンもバラバラ複数台のサーバへ簡単にインストールできる 仕組みが欲しい
    21. 21. gemでの配布がよさそう gemでコマンドラインツールを配布するのは難し いと思っていた 実はgemパッケージのbin/以下にスクリプトを配 置しておくだけ あとはインストールの際にgemがいいようにして くれる各サーバでgem install 〇〇を実行すればよいgemなのでインストールしたいバージョンが選べる
    22. 22. パスワード生成コマンド pass最初は簡単なスクリプトから
    23. 23. pass/Users/hitoshi% gem install passSuccessfully installed pass-0.0.21 gem installed/Users/hitoshi% rehash (シェルによってはrehash)/Users/hitoshi% passVZ3JR9yQkRTA/Users/hitoshi% pass 5cN7TNtFV5MHZifrVMG3x5qtKpfYq7N3Xk6Quy3VMRLDBAJwL パスワード5個生成sme6DSMD2bCV/Users/hitoshi% pass 5 20AJ9xeNvJuPayrVuJJKUfdGmncPJAuhX2EVnN4DfPxuuePtux7GN97p5Y5Cfm 20文字パスワード5個生成NryDyJxAyWaWbAtvg3SuEAFx9SQ7iiag59HpnBei
    24. 24. Perlスクリプトも配布できる(たぶん) ローカルの環境ではOKだった
    25. 25. gem install passどんなサーバにもすぐにインストールできる
    26. 26. bundle gemでgemを自作 しよう
    27. 27. gem作成支援ツールgem作成支援ツール jeweler, hoe, ore新しいgemを作る際にjewelerが最近の環境ですんなり動かなかったもしかして古くなってるかも最近は何が使われてるのか?
    28. 28. http://qa.atmarkit.co.jp/q/54
    29. 29. http://qa.atmarkit.co.jp/q/54bundle gemは安定してて、書くこと少なく て、コマンド一発で便利 bundle gemよさそう!!
    30. 30. bundle gem/Users/hitoshi% (master) bundle gem my_gem -bV create my_gem/Gemfile create my_gem/Rakefile create my_gem/LICENSE create my_gem/README.md create my_gem/.gitignore create my_gem/my_gem.gemspec create my_gem/lib/my_gem.rb create my_gem/lib/my_gem/version.rb create my_gem/bin/my_gemInitializating git repo in /Users/hitoshi/hoge/my_gem
    31. 31. gemspecの編集my_gem.gemspec# -*- encoding: utf-8 -*-require File.expand_path(../lib/my_gem/version, __FILE__)Gem::Specification.new do |gem| gem.authors = ["Hitoshi Kurokawa"] gem.email = ["hitoshi@nextseed.jp"] gem.description = %q{TODO: Write a gem description} gem.summary = %q{TODO: Write a gem summary} gem.homepage = "" とりあえず説明文だけ修正 gem.files = `git ls-files`.split($) gem.executables = gem.files.grep(%r{^bin/}).map{ |f|File.basename(f) } gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.name = "my_gem" gem.require_paths = ["lib"] gem.version = MyGem::VERSIONend
    32. 32. gemファイルをビルドするにはrakeタスクリスト/Users/hitoshi/my_gem% rake -Trake build # Build my_gem-0.0.1.gem into the pkg directoryrake install # Build and install my_gem-0.0.1.gem into system gemsrake release # Create tag v0.0.1 and build and push my_gem-0.0.1.gem to Rubygemsgemファイルのビルド/Users/hitoshi/my_gem% rake buildmy_gem 0.0.1 built to pkg/my_gem-0.0.1.gemgemの手動インストール/Users/hitoshi/my_gem% gem install pkg/my_gem-0.0.1.gemSuccessfully installed my_gem-0.0.11 gem installedgemのビルドとインストール/Users/hitoshi/my_gem% rake installmy_gem 0.0.1 built to pkg/my_gem-0.0.1.gemmy_gem (0.0.1) installedgemのリリース(配布,公開) gemのアカウント登録などの作業は必要/Users/hitoshi/my_gem% rake release
    33. 33. Demo
    34. 34. gemのリリースgemのリリース(配布, 公開)/Users/hitoshi/my_gem% rake releaseRubyGems.orgのアカウント登録は必要 https://rubygems.org/users/new
    35. 35. gemのアップデート リリースlib/my_gem/version.rbmodule MyGem- VERSION = "0.0.1"+ VERSION = "0.0.2"end lib/my_gem/version.rb バージョン番号上げる rake release
    36. 36. GUI: GitX http://gitx.frim.nl/リリース時に自動でtagも打ってくれる
    37. 37. 公開後のルーチン gitで管理 コード修正 lib/my_gem/version.rb バージョン番号上げる GitHubrake release
    38. 38. gemの中身の参考例 lib/以下のファイル構成 gemspecの書き方 テストの書き方 https://github.com/wycats/thor自分はThorを参考にした 普段よく使うgem、似たようなツール、ライブラリがあるなら git cloneして参考にするとよい
    39. 39. postfixのバーチャルドメイン管理 Postfix Admin(PHP)のCLI DataMapper バーチャルドメイン管理 Apache, Postfix公開すればダウンロードはされるみたい使われてるかは分からないけど・・・
    40. 40. まとめbundlerでアプリのgem依存管理がシンプルgemはコマンドラインツールの配布に便利bundle gemで自作gemの公開が簡単
    41. 41. まとめ bundlerでアプリのgem依存管理がシンプル gemはコマンドラインツールの配布に便利 bundle gemで自作gemの公開が簡単簡単・便利なツールがそろっているので自分が普段使っているコマンドラインツールをgem(+GitHub)で公開してみよう!!
    42. 42. ご静聴ありがとうございました
    43. 43. Redmineの例現行バージョン 2.1.0 (2012/09/22 現在)Gemfile有り1.4系 Gemfile有り ver. 1.4.0 2012年4月14日リリース Ruby 1.8.7, 1.9.2 or 1.9.3 Bundler >= 1.0.21 Ruby on Rails 2.3.141.3系 Gemfile無し ver. 1.3.0 2011年12月10日リリース Ruby 1.8.6 or 1.8.7 Ruby on Rails 2.3.14
    44. 44. rails new/Users/hitoshi% rails new hoge create create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app................. create vendor/plugins create vendor/plugins/.gitkeep run bundle install
    45. 45. 利用ケースGemfileを1から書く機会はあまりないのでは?rails アプリ配布されたアプリ!bundle install自作アプリ!Gemfileに使用するgemを追加!bundle install
    46. 46. gemバージョン指定gem install rack -v=1.1.2gem install rake -v=0.9.2gem mygem, "> 1.1"gem yourgem, "= 4.56.4"

    ×