SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
                                                                   K-Ruby 資料




  BundlerやらRailsやら基本的なこと




                                      2011年11月24日
                                      鹿児島大学 学術情報基盤センター
                                      学術情報処理研究部門
                                      古屋 保
                                      furuya@cc.kagoshima-u.ac.jp
November 24, 2011   © Tamotsu FURUYA, All rights reserved.                  1
                                                                  K-Ruby 資料



 皆さんご存知の...




                    https://rvm.beginrescueend.com/

November 24, 2011         © Tamotsu FURUYA, All rights reserved.           2
                                                                 K-Ruby 資料



 RVMについて
    ●   RVM
         –   バージョン環境を簡単に切り替えられる
             $ rvm use ruby-1.9.2
         –   gemの組合せ(Gemセット)も管理できる
             $ rvm gemset use rails3x
         –   RubyもGemセットも一発で切り換えられる
             $ rvm use ruby-1.9.2@rails3x
         –   ディレクトリ内に「.rvmrc」ファイルを作成し,その中に上記
             コマンドを記載しておくと,さらに幸せになれる!




November 24, 2011        © Tamotsu FURUYA, All rights reserved.           3
                                                                 K-Ruby 資料



 RVMについて
    ●   RVM
         –   「.rvm」配下に何か色々作られるのが,どうも...しかも
             パスが長い!
         –   cdコマンドやgemコマンドが何かとすり替えられている.
             (別のスクリプトに置き換わっている)
         –   「rvmsudo」って何もの?(「sudo rvm …」じゃない
             の?)
         –   もう Ruby 1.9.X onlyの環境で良いかも...




November 24, 2011        © Tamotsu FURUYA, All rights reserved.           4
                                                               K-Ruby 資料



 今回紹介するのは...




                    http://gembundler.com/




November 24, 2011      © Tamotsu FURUYA, All rights reserved.           5
                                                                K-Ruby 資料



 Bundlerについて
    ●   Bundler
         –   RubyGemsのラッパー
         –   コマンドは「bundle」
         –   Rails 3 で公式に採用されている gem の管理ツール
         –   依存関係を調べ,必要な全てのパッケージをインストールして
             くれる.
         –   gemを特定のバージョンに固定(指定)できる
         –   アプリケーションごとにgemパッケージを独立して管理するこ
             とができる.




November 24, 2011       © Tamotsu FURUYA, All rights reserved.           6
                                                                   K-Ruby 資料



 Bundlerの導入
    ●   まずは,RVMの削除
        $ rvm seppuku
        $ rm -rf ~/.rvmrc
        .bashrc あるいは .bash_profile に記述してある rvm スクリ
        プトのロード部分を削除
    ●
        次に,gem をアンインストールしていく
        $ gem uninstall hogehoge
    ●   全ての gem をアンインストール(全部消える)


         $ gem list | cut -d " " -f1 | sudo xargs gem uninstall


November 24, 2011          © Tamotsu FURUYA, All rights reserved.           7
                                                                      K-Ruby 資料



 Bundlerの導入
    ●   Bundlerをインストール

         $ sudo gem install bundler

         $ gem list

         *** LOCAL GEMS ***

         Bundler (1.0.21)




November 24, 2011             © Tamotsu FURUYA, All rights reserved.           8
                                                                    K-Ruby 資料



 BundlerによるRailsアプリ作成
    ●   Railsアプリ用のディレクトリを作成する
         $ mkdir myapp
    ●
        作成したディレクトリに移動し,Gemfileを作成
        $ bundle init
    ●   Gemfileを編集する

              source "http://rubygems.org"
              gem "rails", "3.0.11"




November 24, 2011           © Tamotsu FURUYA, All rights reserved.           9
                                                                       K-Ruby 資料



 BundlerによるRailsアプリ作成
    ●   インストールする gem のバージョン指定



             gem    "nokogiri"
             gem    "rails", "3.0.0.beta3"
             gem    "rack", ">=1.0"
             gem    "thin", "~>1.1"




November 24, 2011              © Tamotsu FURUYA, All rights reserved.          10
                                                                 K-Ruby 資料



 BundlerによるRailsアプリ作成
    ●   gemファイルのインストールパスを指定してbundle install
         $ bundle install –-path vendor/bundle
         –   「vendor/bundle/ruby/1.9.1/」配下にgemがインストール
         –   gemの依存関係を記述した Gemfile.lock が生成
              GEM
                remote: http://rubygems.org/
                specs:
                  abstract (1.0.0)
                  actionmailer (3.0.11)
                    actionpack (= 3.0.11)
                    mail (~> 2.2.19)
                  actionpack (3.0.11)
                    activemodel (= 3.0.11)
                    activesupport (= 3.0.11)
                          :
November 24, 2011        © Tamotsu FURUYA, All rights reserved.          11
                                                                    K-Ruby 資料



 BundlerによるRailsアプリ作成
    ●   Railsのスケルトン作成
         $ bundle exec rails new .
    ●
        再度(2度目はパスの指定なしでOK)
        $ bundle install
    ●   その理由...「.bundle/config」ファイル


           BUNDLE_PATH: vendor/bundle
           BUNDLE_DISABLE_SHARED_GEMS: '1'




November 24, 2011           © Tamotsu FURUYA, All rights reserved.          12
                                                                         K-Ruby 資料



 BundlerによるRailsアプリ作成
    ●   全てのgemコマンドの実行の際,頭に「bundle exec」を付
        加する必要がある.
         –   $ bundle exec rails
         –   $ bundle exec rake
         –   $ bundle exec irb
    ●   「$ bundle install –-binstubs」と実行すると rails,rake, irb
        などのコマンドが ./bin ディレクトリにインストールされ
        る.




November 24, 2011                © Tamotsu FURUYA, All rights reserved.          13
                                                             K-Ruby 資料



 まとめ
    ●
        システムや開発環境単位ではなく,アプリケーション単位で
        gemを管理することが可能.
    ●
        色々な gem をインストールおよびアップデートしたことに
        よるバージョンの不整合が起きる問題が解消される.
    ●   バージョンロック(Gemfile.lock)により,決まったgemの
        バージョン構成でデプロイできる.
    ●
        しかし,「bundle exec」を頭につけるのが面倒.
        →「Rails_root/bin」を$PATHに追加すれば解決!
    ●
        アプリケーションフォルダが肥大化してしまう.
        →しょうがないかも.



November 24, 2011    © Tamotsu FURUYA, All rights reserved.          14
                                                               K-Ruby 資料



 実践! (1)まずはDBとテーブルの作成
    $ mysql -u root -p
    mysql> grant all on my_app_db.* to hoge@localhost
        -> identified by 'foobar'
    mysql> ¥q


    $ mysql -u hoge -p
    mysql> create database my_app_db;
    mysql> create table students (
        -> sid char(10) NOT NULL PRIMARY KEY,
        -> name varchar(20),
        -> birth date);

November 24, 2011      © Tamotsu FURUYA, All rights reserved.          15
                                                                 K-Ruby 資料



 (2)Bundlerを使ったRails環境構築

    $   mkdir my_app
    $   cd my_app
    $   bundle init
    $   vi Gemfile
    $   bundle install --path vendor/bundle
    $   bundle install --binstubs


    [ Gemfile ]


    source "http://rubygems.org"
    gem "rails", "3.0.11"

November 24, 2011        © Tamotsu FURUYA, All rights reserved.          16
                                                                      K-Ruby 資料



 (3)新規アプリ作成とMySQL DBの指定

     $ bundle exec rails new . -T -d mysql
     (または,$ bin/rails new . -T -d mysql)
     $ bundle install
     $ vi config/database.yml
    [ config/database.yml ]
      :
     development:
        adapter: mysql2
        encoding: utf8
        database: my_app_db
        username: hoge
        password: foobar
      :

November 24, 2011             © Tamotsu FURUYA, All rights reserved.          17
                                                                         K-Ruby 資料



 (4)Studentモデル作成(O/R Mapping)

    $   bundle exec rails server
    $   bundle exec rails generate model Student
    $   vi app/models/student.rb
    $   bundle exec rails db
    $   bundle exec rails console


    [ app/models/students.rb ]

    class Student < ActiveRecord::Base
        set_primary_key 'sid'
    end


November 24, 2011                © Tamotsu FURUYA, All rights reserved.          18
                                                                            K-Ruby 資料



 (5)routingとStudentsコントローラの作成

    $ vi config/routes.rb
    $ bundle exec rails generate controller Students
    $ vi app/controllers/students_controller.rb
    [ config/routes.rb ]
    MyApp::Application.routes.draw do
      match 'lists' => 'students#list'
        :
    end
    [ app/controllers/students_controller.rb ]
    lass StudentsController < ApplicationController
        def list
        end
    end
November 24, 2011                   © Tamotsu FURUYA, All rights reserved.          19
                                                                            K-Ruby 資料



 (6)ビューの作成,コントローラとの連携

    $ echo "hello" > app/views/students/list.html.erb
    $ vi app/controllers/students_controller.rb
    $ vi app/views/students/list.html.erb

    [ app/controllers/students_controller.rb ]

    lass StudentsController < ApplicationController
        def list
            @students = Student.all
        end
    end
    [ app/views/students/list.html.erb ]

    hello<br />
    <%= p @students %>

November 24, 2011                   © Tamotsu FURUYA, All rights reserved.          20
                                                                            K-Ruby 資料



 (7)とりあえずレコードの内容を表示
    [ app/views/students/list.html.erb ]

    <table>
    <tr>
    <th>Sid</th><th>Name</th><th>Birth</th>
    </tr>
    <% @students.each do |s| %>
    <tr>
    <td><%= s.sid %></td>
    <td><%= s.name %></td>
    <td><%= s.birth %></td>
    </tr>
    <% end %>
    </table>




November 24, 2011                   © Tamotsu FURUYA, All rights reserved.          21
                                                                            K-Ruby 資料



 (8)学生一覧から個人データを表示させる
    [ config/routes.rb ]

    MyApp::Application.routes.draw do
      match 'lists' => 'students#list'
      match 'lists/:sid' => 'students#show'
        :
    end

    [ app/controllers/students_controller.rb ]

    class StudentsController < ApplicationController
        def list
            @students = Student.all
        end
        def show
            @student = Student.find(params[:sid])
        end
    end
November 24, 2011                   © Tamotsu FURUYA, All rights reserved.          22
                                                                          K-Ruby 資料



 (8)学生一覧から個人データを表示させる
    [ app/views/students/show.html.erb ]

    <table>
    <tr><th>Sid</th><td><%= @student.sid %></td></tr>
    <tr><th>Name</th><td><%= @student.name %></td></tr>
    <tr><th>Birth</th><td><%= @student.birth %></td></tr>
    </table>

    <%= link_to 'return lists', lists_path %>

    [ config/routes.rb ]

    MyApp::Application.routes.draw do
      match 'lists' => 'students#list'
      match 'lists/:sid' => 'students#show', :as => 'list'
        :
    end

November 24, 2011                 © Tamotsu FURUYA, All rights reserved.          23
                                                                            K-Ruby 資料



 (8)学生一覧から個人データを表示させる
    [ app/views/students/list.html.erb ]

    <table>
    <tr>
    <th>Sid</th><th>Name</th><th>Birth</th>
    </tr>
    <% @students.each do |s| %>
    <tr>
    <td><%= link_to s.sid, list_path(s.sid) %></td>
    <td><%= s.name %></td>
    <td><%= s.birth %></td>
    </tr>
    <% end %>
    </table>




November 24, 2011                   © Tamotsu FURUYA, All rights reserved.          24

Contenu connexe

Tendances

Using Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba PiggUsing Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba PiggYuuki Namikawa
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1Makoto Haruyama
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2学 松崎
 
Solr meeting in Japan 2011
Solr meeting in Japan 2011Solr meeting in Japan 2011
Solr meeting in Japan 2011Takahiko Ito
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作Yuki Okamoto
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作アシアル株式会社
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会Yasutaka Hamada
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8Satoshi Ohkubo
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Ashitaba YOSHIOKA
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」
~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」
~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」Kazuyuki Sato
 
Java用O/Rマッピングソフトについて私が知っている二、三の事柄
Java用O/Rマッピングソフトについて私が知っている二、三の事柄Java用O/Rマッピングソフトについて私が知っている二、三の事柄
Java用O/Rマッピングソフトについて私が知っている二、三の事柄Akira Shimosako
 

Tendances (17)

Using Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba PiggUsing Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba Pigg
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
Mod mrubyについて
Mod mrubyについてMod mrubyについて
Mod mrubyについて
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
 
Solr meeting in Japan 2011
Solr meeting in Japan 2011Solr meeting in Japan 2011
Solr meeting in Japan 2011
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
How to make gem
How to make gemHow to make gem
How to make gem
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」
~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」
~Solaris 11 をマルチ・プロトコル SCSI ターゲットに~ 「もう一つのストレージ仮想化機能 “COMSTAR”概要」
 
Java用O/Rマッピングソフトについて私が知っている二、三の事柄
Java用O/Rマッピングソフトについて私が知っている二、三の事柄Java用O/Rマッピングソフトについて私が知っている二、三の事柄
Java用O/Rマッピングソフトについて私が知っている二、三の事柄
 

Similaire à Management of Gems using Bundler.

Integration Technology of Ruby and DB.
Integration Technology of Ruby and DB.Integration Technology of Ruby and DB.
Integration Technology of Ruby and DB.Tamotsu Furuya
 
20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表Fukui Osamu
 
Ruby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇RubyRuby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇RubyYouhei SASAKI
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Hitoshi Kurokawa
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Sea Mountain
 
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Yohei Yasukawa
 
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版宏治 高尾
 
Ruby Enterprise Environment
Ruby Enterprise EnvironmentRuby Enterprise Environment
Ruby Enterprise EnvironmentTomoya Kawanishi
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudKazuki Aranami
 
Oracle Solaris 11デベロッパーが押さえておきたい機能
Oracle Solaris 11デベロッパーが押さえておきたい機能Oracle Solaris 11デベロッパーが押さえておきたい機能
Oracle Solaris 11デベロッパーが押さえておきたい機能Kazuyuki Sato
 

Similaire à Management of Gems using Bundler. (20)

Summary of Ruby
Summary of RubySummary of Ruby
Summary of Ruby
 
Openstack chef-repo
Openstack chef-repoOpenstack chef-repo
Openstack chef-repo
 
Integration Technology of Ruby and DB.
Integration Technology of Ruby and DB.Integration Technology of Ruby and DB.
Integration Technology of Ruby and DB.
 
20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表
 
Ruby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇RubyRuby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇Ruby
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
 
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Ruby In Wheezy
Ruby In WheezyRuby In Wheezy
Ruby In Wheezy
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
 
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
 
Rubyな日々
Rubyな日々Rubyな日々
Rubyな日々
 
Ruby Enterprise Environment
Ruby Enterprise EnvironmentRuby Enterprise Environment
Ruby Enterprise Environment
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
 
Sinatra and heroku for mac
Sinatra and heroku for macSinatra and heroku for mac
Sinatra and heroku for mac
 
Oracle Solaris 11デベロッパーが押さえておきたい機能
Oracle Solaris 11デベロッパーが押さえておきたい機能Oracle Solaris 11デベロッパーが押さえておきたい機能
Oracle Solaris 11デベロッパーが押さえておきたい機能
 
OSSDB MySQL
OSSDB MySQLOSSDB MySQL
OSSDB MySQL
 
Railsの基礎
Railsの基礎Railsの基礎
Railsの基礎
 

Management of Gems using Bundler.

  • 1. K-Ruby 資料 BundlerやらRailsやら基本的なこと 2011年11月24日 鹿児島大学 学術情報基盤センター 学術情報処理研究部門 古屋 保 furuya@cc.kagoshima-u.ac.jp November 24, 2011 © Tamotsu FURUYA, All rights reserved. 1
  • 2. K-Ruby 資料 皆さんご存知の... https://rvm.beginrescueend.com/ November 24, 2011 © Tamotsu FURUYA, All rights reserved. 2
  • 3. K-Ruby 資料 RVMについて ● RVM – バージョン環境を簡単に切り替えられる $ rvm use ruby-1.9.2 – gemの組合せ(Gemセット)も管理できる $ rvm gemset use rails3x – RubyもGemセットも一発で切り換えられる $ rvm use ruby-1.9.2@rails3x – ディレクトリ内に「.rvmrc」ファイルを作成し,その中に上記 コマンドを記載しておくと,さらに幸せになれる! November 24, 2011 © Tamotsu FURUYA, All rights reserved. 3
  • 4. K-Ruby 資料 RVMについて ● RVM – 「.rvm」配下に何か色々作られるのが,どうも...しかも パスが長い! – cdコマンドやgemコマンドが何かとすり替えられている. (別のスクリプトに置き換わっている) – 「rvmsudo」って何もの?(「sudo rvm …」じゃない の?) – もう Ruby 1.9.X onlyの環境で良いかも... November 24, 2011 © Tamotsu FURUYA, All rights reserved. 4
  • 5. K-Ruby 資料 今回紹介するのは... http://gembundler.com/ November 24, 2011 © Tamotsu FURUYA, All rights reserved. 5
  • 6. K-Ruby 資料 Bundlerについて ● Bundler – RubyGemsのラッパー – コマンドは「bundle」 – Rails 3 で公式に採用されている gem の管理ツール – 依存関係を調べ,必要な全てのパッケージをインストールして くれる. – gemを特定のバージョンに固定(指定)できる – アプリケーションごとにgemパッケージを独立して管理するこ とができる. November 24, 2011 © Tamotsu FURUYA, All rights reserved. 6
  • 7. K-Ruby 資料 Bundlerの導入 ● まずは,RVMの削除 $ rvm seppuku $ rm -rf ~/.rvmrc .bashrc あるいは .bash_profile に記述してある rvm スクリ プトのロード部分を削除 ● 次に,gem をアンインストールしていく $ gem uninstall hogehoge ● 全ての gem をアンインストール(全部消える) $ gem list | cut -d " " -f1 | sudo xargs gem uninstall November 24, 2011 © Tamotsu FURUYA, All rights reserved. 7
  • 8. K-Ruby 資料 Bundlerの導入 ● Bundlerをインストール $ sudo gem install bundler $ gem list *** LOCAL GEMS *** Bundler (1.0.21) November 24, 2011 © Tamotsu FURUYA, All rights reserved. 8
  • 9. K-Ruby 資料 BundlerによるRailsアプリ作成 ● Railsアプリ用のディレクトリを作成する $ mkdir myapp ● 作成したディレクトリに移動し,Gemfileを作成 $ bundle init ● Gemfileを編集する source "http://rubygems.org" gem "rails", "3.0.11" November 24, 2011 © Tamotsu FURUYA, All rights reserved. 9
  • 10. K-Ruby 資料 BundlerによるRailsアプリ作成 ● インストールする gem のバージョン指定 gem "nokogiri" gem "rails", "3.0.0.beta3" gem "rack", ">=1.0" gem "thin", "~>1.1" November 24, 2011 © Tamotsu FURUYA, All rights reserved. 10
  • 11. K-Ruby 資料 BundlerによるRailsアプリ作成 ● gemファイルのインストールパスを指定してbundle install $ bundle install –-path vendor/bundle – 「vendor/bundle/ruby/1.9.1/」配下にgemがインストール – gemの依存関係を記述した Gemfile.lock が生成 GEM remote: http://rubygems.org/ specs: abstract (1.0.0) actionmailer (3.0.11) actionpack (= 3.0.11) mail (~> 2.2.19) actionpack (3.0.11) activemodel (= 3.0.11) activesupport (= 3.0.11) : November 24, 2011 © Tamotsu FURUYA, All rights reserved. 11
  • 12. K-Ruby 資料 BundlerによるRailsアプリ作成 ● Railsのスケルトン作成 $ bundle exec rails new . ● 再度(2度目はパスの指定なしでOK) $ bundle install ● その理由...「.bundle/config」ファイル BUNDLE_PATH: vendor/bundle BUNDLE_DISABLE_SHARED_GEMS: '1' November 24, 2011 © Tamotsu FURUYA, All rights reserved. 12
  • 13. K-Ruby 資料 BundlerによるRailsアプリ作成 ● 全てのgemコマンドの実行の際,頭に「bundle exec」を付 加する必要がある. – $ bundle exec rails – $ bundle exec rake – $ bundle exec irb ● 「$ bundle install –-binstubs」と実行すると rails,rake, irb などのコマンドが ./bin ディレクトリにインストールされ る. November 24, 2011 © Tamotsu FURUYA, All rights reserved. 13
  • 14. K-Ruby 資料 まとめ ● システムや開発環境単位ではなく,アプリケーション単位で gemを管理することが可能. ● 色々な gem をインストールおよびアップデートしたことに よるバージョンの不整合が起きる問題が解消される. ● バージョンロック(Gemfile.lock)により,決まったgemの バージョン構成でデプロイできる. ● しかし,「bundle exec」を頭につけるのが面倒. →「Rails_root/bin」を$PATHに追加すれば解決! ● アプリケーションフォルダが肥大化してしまう. →しょうがないかも. November 24, 2011 © Tamotsu FURUYA, All rights reserved. 14
  • 15. K-Ruby 資料 実践! (1)まずはDBとテーブルの作成 $ mysql -u root -p mysql> grant all on my_app_db.* to hoge@localhost -> identified by 'foobar' mysql> ¥q $ mysql -u hoge -p mysql> create database my_app_db; mysql> create table students ( -> sid char(10) NOT NULL PRIMARY KEY, -> name varchar(20), -> birth date); November 24, 2011 © Tamotsu FURUYA, All rights reserved. 15
  • 16. K-Ruby 資料 (2)Bundlerを使ったRails環境構築 $ mkdir my_app $ cd my_app $ bundle init $ vi Gemfile $ bundle install --path vendor/bundle $ bundle install --binstubs [ Gemfile ] source "http://rubygems.org" gem "rails", "3.0.11" November 24, 2011 © Tamotsu FURUYA, All rights reserved. 16
  • 17. K-Ruby 資料 (3)新規アプリ作成とMySQL DBの指定 $ bundle exec rails new . -T -d mysql (または,$ bin/rails new . -T -d mysql) $ bundle install $ vi config/database.yml [ config/database.yml ] : development: adapter: mysql2 encoding: utf8 database: my_app_db username: hoge password: foobar : November 24, 2011 © Tamotsu FURUYA, All rights reserved. 17
  • 18. K-Ruby 資料 (4)Studentモデル作成(O/R Mapping) $ bundle exec rails server $ bundle exec rails generate model Student $ vi app/models/student.rb $ bundle exec rails db $ bundle exec rails console [ app/models/students.rb ] class Student < ActiveRecord::Base set_primary_key 'sid' end November 24, 2011 © Tamotsu FURUYA, All rights reserved. 18
  • 19. K-Ruby 資料 (5)routingとStudentsコントローラの作成 $ vi config/routes.rb $ bundle exec rails generate controller Students $ vi app/controllers/students_controller.rb [ config/routes.rb ] MyApp::Application.routes.draw do match 'lists' => 'students#list' : end [ app/controllers/students_controller.rb ] lass StudentsController < ApplicationController def list end end November 24, 2011 © Tamotsu FURUYA, All rights reserved. 19
  • 20. K-Ruby 資料 (6)ビューの作成,コントローラとの連携 $ echo "hello" > app/views/students/list.html.erb $ vi app/controllers/students_controller.rb $ vi app/views/students/list.html.erb [ app/controllers/students_controller.rb ] lass StudentsController < ApplicationController def list @students = Student.all end end [ app/views/students/list.html.erb ] hello<br /> <%= p @students %> November 24, 2011 © Tamotsu FURUYA, All rights reserved. 20
  • 21. K-Ruby 資料 (7)とりあえずレコードの内容を表示 [ app/views/students/list.html.erb ] <table> <tr> <th>Sid</th><th>Name</th><th>Birth</th> </tr> <% @students.each do |s| %> <tr> <td><%= s.sid %></td> <td><%= s.name %></td> <td><%= s.birth %></td> </tr> <% end %> </table> November 24, 2011 © Tamotsu FURUYA, All rights reserved. 21
  • 22. K-Ruby 資料 (8)学生一覧から個人データを表示させる [ config/routes.rb ] MyApp::Application.routes.draw do match 'lists' => 'students#list' match 'lists/:sid' => 'students#show' : end [ app/controllers/students_controller.rb ] class StudentsController < ApplicationController def list @students = Student.all end def show @student = Student.find(params[:sid]) end end November 24, 2011 © Tamotsu FURUYA, All rights reserved. 22
  • 23. K-Ruby 資料 (8)学生一覧から個人データを表示させる [ app/views/students/show.html.erb ] <table> <tr><th>Sid</th><td><%= @student.sid %></td></tr> <tr><th>Name</th><td><%= @student.name %></td></tr> <tr><th>Birth</th><td><%= @student.birth %></td></tr> </table> <%= link_to 'return lists', lists_path %> [ config/routes.rb ] MyApp::Application.routes.draw do match 'lists' => 'students#list' match 'lists/:sid' => 'students#show', :as => 'list' : end November 24, 2011 © Tamotsu FURUYA, All rights reserved. 23
  • 24. K-Ruby 資料 (8)学生一覧から個人データを表示させる [ app/views/students/list.html.erb ] <table> <tr> <th>Sid</th><th>Name</th><th>Birth</th> </tr> <% @students.each do |s| %> <tr> <td><%= link_to s.sid, list_path(s.sid) %></td> <td><%= s.name %></td> <td><%= s.birth %></td> </tr> <% end %> </table> November 24, 2011 © Tamotsu FURUYA, All rights reserved. 24