SlideShare a Scribd company logo
Rails3.1rc4 を試してみた
      @3rddoor
インストール


                        オプションを付加


# gem install rails --pre




          これは Rails2 以前の方法
         (公式ブログに載っているけど)
Rails2 以前の方法でのインストール




      # gem install rails --pre


  /usr/local/lib にインストールされる
  = root 権限が必要(あたりまえ)
bundler を使ったインストール
                                 Rails3.0 以降の方法
Gemfile を作成
●




    source :rubygems
    gem 'rails', '>=3.1.0rc4'

bundler でインストール
●
                           先にアプリケーションディレクトリを作成

    $ mkdir testapp; cd testapp
    $ bundle install vendor/bundle
一般ユーザ権限              アプリケーションディレクトリ内にインストール
アプリ生成



$ bundle exec rails new .


    カレントディレクトリにアプリケーションを作成
デフォルトの Gemfile
source 'http://rubygems.org'

gem 'rails', '3.1.0.rc4'

# Bundle edge Rails instead:
# gem 'rails',       :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

# Asset template engines                                   SASS
gem 'json'
gem 'sass-rails', "~> 3.1.0.rc"
gem 'coffee-script'
gem 'uglifier'
                                      CoffeeScript
gem 'jquery-rails'

# Use unicorn as the web server
# gem 'unicorn'                                jQuery
# Deploy with Capistrano
# gem 'capistrano'
scaffold
$ bundle exec rails generate scaffold item
title:string comment:text
$ bundle exec rake db:migrate




                                いつもどおり。
web-app-theme
●   公式 gem の最新版は Rails 3.1 に未対応
●   Gemfile に以下を追記して bundle install
     gem 'web-app-theme', :git => 'http://github.com/dknight/web-app-
    theme.git'
●   テンプレート生成
     $ bundle exec rails generate web_app_theme:theme
●   app/view/items/index.html.erb 追記
    <table class=”table”>




残念ながら普通のCSS
SASS を試す
●   SASS: http://sass-lang.com/
    ●   Syntactically Awesome Stylesheets
    ●   CSS の文法を改良して書きやすくしたもの
    ●   入れ子構文・変数などが使える
    (例) app/assets/stylesheets/table.css.scss 作成
        $grey: #aaaaaa;
        .table tr td {
            border-color: $grey;
            a{
                 background-color: $grey;
            }
        }
                         table の枠線とtable 内のリンクの背景色を指定
jQuery を試す
●   Table Drag and Drop JQuery plugin
        http://www.isocra.com/2008/02/table-drag-and-
        drop-jquery-plugin/
●
    インストール
    ●   app/assets/javascripts/ にコピー
CoffeeScriptを試す
●   app/assets/javascripts/table.js.coffee 作成
          $(document).ready( ->$(“itemtbl”).tableDnD())
●   app/views/items/index.html.erb 修正
    ●   table に id=”itemtbl” 追加
    ●   見出しの tr に class=”nodrag nodrop” 追加




                   表の行を移動できるように(キャプチャ略)
Reversible migration
●   順序を保存するために migration 生成                          いつもどおり。
    $ bundle exec rails generate migration
    AddPositionToItem position:integer
●   db/migrate/201107..._add_position_to_item.rb
      class AddDispOrderToItem < ActiveRecord:Migration
        def change
            add_column :items, :position, :integer
        end
      end              従来の self.up / self.down が change に統合
●   実行
    $ bundle exec rake db:migrate
acts_as_list
●   Gemfile 追記
     gem 'acts_as_list'
●   インストール
     $ bundle install
●   モデル修正 app/models/item.rb
     class Item < ActiveRecord::Base
        acts_as_list
     end
jQuery と CoffeeScript を試す
●   CoffeeScript でイベントハンドラ記述 - table.js.coffee に追記
     $(document).ready( ->
         $(“#itemtbl”).tableDnD( {
              onDrop: (table, row) ->
                rows = table.tBodies[0].rows
                index = -1
                for i in [0..rows.length-1]
                  if rows[i].id == row.id
                    index = i
               $.post “items/#{row.id}/update_order.json”, { index: index }
         })
     )
update_order アクションの実装
●   コントローラ修正 app/controllers/items_controller.rb
      def update_order
        @item = Item.find(params[:id])
        @item.insert_at params[:index]
        if @item.save
            format.json { head :ok }
        else
            format.json { render :json => @item.errors, :status => :unprocessable_entity }
        end
      end
●   routing 設定 config/routes.rb
      resources :items do
       member do
            post 'update_order'
       end
      end
まとめ
●   テーブルの内容編集・順序並べ替え機能の実装
    ●   コード量
        –   bundle コマンドによるインストール: 3回
        –   Rails コマンドによる生成: 3回
        –   Ruby: 15行(変更部分)
        –   SASS: 7行(お好みでいくらでも)
        –   CoffeeScript: 13行
●   Rails3.1
    ●
        非対応プラグインなどもある大幅な更新ですが、いろい
        ろ書きやすくなっているところも多く楽しみ

More Related Content

What's hot (20)

PDF
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
 
PPTX
serverspecを使用したサーバ設定テストの実例
Koichi Shimozono
 
PDF
Elixir Meetup #1 Loggerの構造と拡張
Sugawara Genki
 
PPT
Apache Module
Tomohiro Ikebe
 
PDF
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
 
PDF
シンプルなシステム構成フレームワークalnair
Naoya Inada
 
PDF
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
Naotoshi Seo
 
PDF
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
 
PPT
Cakephp tokyo5
ichikaway
 
PDF
GradleによるG*なビルドシステムの構築
Masatoshi Hayashi
 
PDF
Chef SoloからItamaeに完全移行した話+
Tsuyoshi Torii
 
PDF
Siphone coffeemaker okayama-js-1
NISHIMOTO Keisuke
 
PDF
Haskellday rf
rf0444
 
PDF
Ansible 入門 #01 (初心者向け)
Taro Hirose
 
PDF
お手軽並列処理
博文 斉藤
 
PDF
Haikara
jewel12
 
PDF
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
 
PDF
ChefとPuppetの比較
Sugawara Genki
 
PDF
Ansible入門
Daiki Hayakawa
 
PPTX
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA, Inc.
 
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
 
serverspecを使用したサーバ設定テストの実例
Koichi Shimozono
 
Elixir Meetup #1 Loggerの構造と拡張
Sugawara Genki
 
Apache Module
Tomohiro Ikebe
 
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
 
シンプルなシステム構成フレームワークalnair
Naoya Inada
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
Naotoshi Seo
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
 
Cakephp tokyo5
ichikaway
 
GradleによるG*なビルドシステムの構築
Masatoshi Hayashi
 
Chef SoloからItamaeに完全移行した話+
Tsuyoshi Torii
 
Siphone coffeemaker okayama-js-1
NISHIMOTO Keisuke
 
Haskellday rf
rf0444
 
Ansible 入門 #01 (初心者向け)
Taro Hirose
 
お手軽並列処理
博文 斉藤
 
Haikara
jewel12
 
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
 
ChefとPuppetの比較
Sugawara Genki
 
Ansible入門
Daiki Hayakawa
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA, Inc.
 

Viewers also liked (19)

PPT
基板を作ろう
Kazuyuki Nakashima
 
PPTX
KiCadと日本ユーザコミュニティの紹介
Kenta Yonekura
 
PDF
MDK-ARMでPSoC開発
Yoshihiro Tsuboi
 
PDF
Portfolio MAY 2009_LO
Sylvana Shehata
 
PDF
EAGLE on PCB Design (EAGLEを使った回路・パターン設計)
Katsuhiro Morishita
 
PDF
脱「丸コピー」のための電子回路入門
Ryota Suzuki
 
PPT
基板を作ろう(修正版)
Kazuyuki Nakashima
 
PDF
KiCadで雑に基板を作る チュートリアル
裕士 常田
 
PDF
What Makes Great Infographics
SlideShare
 
PDF
Masters of SlideShare
Kapost
 
PDF
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
Empowered Presentations
 
PDF
You Suck At PowerPoint!
Jesse Desjardins - @jessedee
 
PDF
10 Ways to Win at SlideShare SEO & Presentation Optimization
Oneupweb
 
PDF
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
Content Marketing Institute
 
PDF
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
SlideShare
 
PDF
2015 Upload Campaigns Calendar - SlideShare
SlideShare
 
PPTX
What to Upload to SlideShare
SlideShare
 
PDF
How to Make Awesome SlideShares: Tips & Tricks
SlideShare
 
PDF
Getting Started With SlideShare
SlideShare
 
基板を作ろう
Kazuyuki Nakashima
 
KiCadと日本ユーザコミュニティの紹介
Kenta Yonekura
 
MDK-ARMでPSoC開発
Yoshihiro Tsuboi
 
Portfolio MAY 2009_LO
Sylvana Shehata
 
EAGLE on PCB Design (EAGLEを使った回路・パターン設計)
Katsuhiro Morishita
 
脱「丸コピー」のための電子回路入門
Ryota Suzuki
 
基板を作ろう(修正版)
Kazuyuki Nakashima
 
KiCadで雑に基板を作る チュートリアル
裕士 常田
 
What Makes Great Infographics
SlideShare
 
Masters of SlideShare
Kapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
Empowered Presentations
 
You Suck At PowerPoint!
Jesse Desjardins - @jessedee
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
Oneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
Content Marketing Institute
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
SlideShare
 
2015 Upload Campaigns Calendar - SlideShare
SlideShare
 
What to Upload to SlideShare
SlideShare
 
How to Make Awesome SlideShares: Tips & Tricks
SlideShare
 
Getting Started With SlideShare
SlideShare
 
Ad

Similar to Rails3.1rc4を試してみた (20)

KEY
Rails基礎講座 part.2
Jun Yokoyama
 
PDF
Rubykansai 81
Satomi Tsujita
 
PDF
Ruby on Rails Tutorial
Ken Iiboshi
 
PPTX
Tech fun rails_workshop
OMEGA (@equal_001)
 
PPTX
フレームワーク品評会 Ruby on Rails #crossjp
Shiro Fukuda
 
PPT
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
 
PPT
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
 
PDF
Comableを支える技術〜できるだけコーディングせずにズルして作るRailsアプリ〜
Cake YOSHIDA
 
PDF
Railsの基礎
Junya Ishihara
 
PDF
Rails Controller Fundamentals
Takashi SAKAGUCHI
 
KEY
Rails and twitter #twtr_hack
i7a
 
PDF
はじめての Rails アプリ開発
n-fukidome
 
PPTX
UnicastWS vol.2
Unicast Inc.
 
PDF
Rails初心者レッスン lesson2 3edition
Satomi Tsujita
 
PPT
Ruby on Rails Tutorial Chapter11-13
Sea Mountain
 
PDF
nomlab_okayamaruby_slide
nomlab
 
PDF
Rails初心者レッスン lesson4 2edition
Satomi Tsujita
 
PDF
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
 
PPT
Ruby on Rails3 Tutorial Chapter2
Sea Mountain
 
PDF
食べログ流 - Rails Upgrade Practices
Kaito Minatoya
 
Rails基礎講座 part.2
Jun Yokoyama
 
Rubykansai 81
Satomi Tsujita
 
Ruby on Rails Tutorial
Ken Iiboshi
 
Tech fun rails_workshop
OMEGA (@equal_001)
 
フレームワーク品評会 Ruby on Rails #crossjp
Shiro Fukuda
 
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
 
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
 
Comableを支える技術〜できるだけコーディングせずにズルして作るRailsアプリ〜
Cake YOSHIDA
 
Railsの基礎
Junya Ishihara
 
Rails Controller Fundamentals
Takashi SAKAGUCHI
 
Rails and twitter #twtr_hack
i7a
 
はじめての Rails アプリ開発
n-fukidome
 
UnicastWS vol.2
Unicast Inc.
 
Rails初心者レッスン lesson2 3edition
Satomi Tsujita
 
Ruby on Rails Tutorial Chapter11-13
Sea Mountain
 
nomlab_okayamaruby_slide
nomlab
 
Rails初心者レッスン lesson4 2edition
Satomi Tsujita
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
 
Ruby on Rails3 Tutorial Chapter2
Sea Mountain
 
食べログ流 - Rails Upgrade Practices
Kaito Minatoya
 
Ad

Recently uploaded (9)

PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 

Rails3.1rc4を試してみた

  • 2. インストール オプションを付加 # gem install rails --pre これは Rails2 以前の方法 (公式ブログに載っているけど)
  • 3. Rails2 以前の方法でのインストール # gem install rails --pre /usr/local/lib にインストールされる = root 権限が必要(あたりまえ)
  • 4. bundler を使ったインストール Rails3.0 以降の方法 Gemfile を作成 ● source :rubygems gem 'rails', '>=3.1.0rc4' bundler でインストール ● 先にアプリケーションディレクトリを作成 $ mkdir testapp; cd testapp $ bundle install vendor/bundle 一般ユーザ権限 アプリケーションディレクトリ内にインストール
  • 5. アプリ生成 $ bundle exec rails new . カレントディレクトリにアプリケーションを作成
  • 6. デフォルトの Gemfile source 'http://rubygems.org' gem 'rails', '3.1.0.rc4' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' # Asset template engines SASS gem 'json' gem 'sass-rails', "~> 3.1.0.rc" gem 'coffee-script' gem 'uglifier' CoffeeScript gem 'jquery-rails' # Use unicorn as the web server # gem 'unicorn' jQuery # Deploy with Capistrano # gem 'capistrano'
  • 7. scaffold $ bundle exec rails generate scaffold item title:string comment:text $ bundle exec rake db:migrate いつもどおり。
  • 8. web-app-theme ● 公式 gem の最新版は Rails 3.1 に未対応 ● Gemfile に以下を追記して bundle install  gem 'web-app-theme', :git => 'http://github.com/dknight/web-app- theme.git' ● テンプレート生成 $ bundle exec rails generate web_app_theme:theme ● app/view/items/index.html.erb 追記 <table class=”table”> 残念ながら普通のCSS
  • 9. SASS を試す ● SASS: http://sass-lang.com/ ● Syntactically Awesome Stylesheets ● CSS の文法を改良して書きやすくしたもの ● 入れ子構文・変数などが使える (例) app/assets/stylesheets/table.css.scss 作成 $grey: #aaaaaa; .table tr td { border-color: $grey; a{ background-color: $grey; } } table の枠線とtable 内のリンクの背景色を指定
  • 10. jQuery を試す ● Table Drag and Drop JQuery plugin http://www.isocra.com/2008/02/table-drag-and- drop-jquery-plugin/ ● インストール ● app/assets/javascripts/ にコピー
  • 11. CoffeeScriptを試す ● app/assets/javascripts/table.js.coffee 作成 $(document).ready( ->$(“itemtbl”).tableDnD()) ● app/views/items/index.html.erb 修正 ● table に id=”itemtbl” 追加 ● 見出しの tr に class=”nodrag nodrop” 追加 表の行を移動できるように(キャプチャ略)
  • 12. Reversible migration ● 順序を保存するために migration 生成 いつもどおり。 $ bundle exec rails generate migration AddPositionToItem position:integer ● db/migrate/201107..._add_position_to_item.rb class AddDispOrderToItem < ActiveRecord:Migration def change add_column :items, :position, :integer end end 従来の self.up / self.down が change に統合 ● 実行 $ bundle exec rake db:migrate
  • 13. acts_as_list ● Gemfile 追記 gem 'acts_as_list' ● インストール $ bundle install ● モデル修正 app/models/item.rb class Item < ActiveRecord::Base acts_as_list end
  • 14. jQuery と CoffeeScript を試す ● CoffeeScript でイベントハンドラ記述 - table.js.coffee に追記 $(document).ready( -> $(“#itemtbl”).tableDnD( { onDrop: (table, row) -> rows = table.tBodies[0].rows index = -1 for i in [0..rows.length-1] if rows[i].id == row.id index = i $.post “items/#{row.id}/update_order.json”, { index: index } }) )
  • 15. update_order アクションの実装 ● コントローラ修正 app/controllers/items_controller.rb def update_order @item = Item.find(params[:id]) @item.insert_at params[:index] if @item.save format.json { head :ok } else format.json { render :json => @item.errors, :status => :unprocessable_entity } end end ● routing 設定 config/routes.rb resources :items do member do post 'update_order' end end
  • 16. まとめ ● テーブルの内容編集・順序並べ替え機能の実装 ● コード量 – bundle コマンドによるインストール: 3回 – Rails コマンドによる生成: 3回 – Ruby: 15行(変更部分) – SASS: 7行(お好みでいくらでも) – CoffeeScript: 13行 ● Rails3.1 ● 非対応プラグインなどもある大幅な更新ですが、いろい ろ書きやすくなっているところも多く楽しみ