ruby on railsの紹介

Post on 11-Sep-2014

12 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

NSEG第19回勉強会で発表した内容です.Railsの便利さをもっといろんな人に知ってもらいたくて,発表しました.

TRANSCRIPT

Ruby on Railsの紹介

長野高専 電子情報工学科2年 奥本 隼

自己紹介

• 長野高専 電子情報工学科 2年• クリエイターズ同好会 同好会長

• Ruby/Ruby on Rails/Ubuntu/C#/セプキャン2011言語組

• Twitter: @falcon_8823

• Facebook: falcon.8823

奥本 隼 (OKUMOTO Hayato)

Ruby on Railsとは?• Webアプリケーションフレームワーク• フルスタックフレームワーク• Model View Controller(MVC) パターンを採用• 同じ記述を繰り返さない

• DRY(Don’t Repeat Yourself)• 設定よりも規約

• CoC(Convention over Configurarion)

高専カンファレンス in 長野2(7/16)でQRコードを使って

受付をスムーズにしよう!

QRコードを利用した,参加登録,受付システム「カンファイン」

開発版http://conf-in-dev.heroku.com/

conf-in-dev.heroku.com

5月上旬:設計開始

6月上旬:アルファリリース

6月下旬:長野2の参加登録開始

7月16日:当日

わずか,1ヶ月半で完成!!

驚異の生産性に

感動

それまでの経験は・・・

CGI:昔ちょろっと

PHP:あまり触ったことがない

Rails:名前しか聞いたことがない

Webアプリケーションの開発の経験ゼロ

PHP?Rails?

Railsを使ってみよう

Ruby 1.8.7 + Rails 2.3.11

Ruby 1.9.2 + Rails 3.1.0

Railsのメリット・デメリットメリット• 生産性が非常に高い• メンテナンス性に優れている(枠に沿った開発)• 信頼性が高まる(安定面,セキュリティ面)

デメリット• 巨大なフレームワークを理解する必要がある• レール(Railsの規約)から脱線するとうまくいかなくなる

• 使う内容によっては,大きく重たい

Railsはレールを敷いてくれる

• Scaffolding機能• 基本的なCRUD(Create, Read, Update, Delete)機能を自動で実装してくれる

例えば・・・簡単なブログシステム

• 記事 ‒ article(Model)• タイトル - title• 投稿者 - author• 本文 - body

• コメント ‒ comment(Model)• 記事のID ‒ article_id• 記入者 ‒ user_name• コメント内容 - body

$ rails new nseg‐blog$ cd nseg‐blog$ rails generate scaffold article title:string author:string body:text$ rake db:migrate$ rails server

これで骨組みが完成

http://nseg-blog-1.heroku.com/articles

Create, Update

Read

Delete

コードを書かずに骨組みが完成

コメント機能• 作成,削除だけ行える単純な機能• 記事ごとにコメントを一覧表示すれば良い

Scaffoldingは不要

$ rails g model comment article_id:integer user_name:stringbody:string

$ rails g controller comments create destroy

最低限のモデルとコントローラを作成

https://github.com/falcon8823/nseg-blog-2

モデルclass Article < ActiveRecord::Base# リレーションシップ# articleはcommentsを持つ# articleが削除されたときは,commentsも削除has_many :comments, dependent: :delete_all

# 空かどうかの検証validates :title, :author, :body,presence: true

endapp/model/article.rb

モデルclass Comment < ActiveRecord::Basebelongs_to :article

validates :user_name, :body,presence: true

# article_idを勝手に書き換えられないようにattr_protected :article_id

end

app/model/comment.rb

ビュー<ul><% @article.comments.each do |comment| %><li><%= "#{comment.body} -- #{comment.user_name} (#{comment.created_at})" %><%= link_to '削除', [@article,comment], confirm: '削除しますか?', method: :delete %></li><% end %></ul>

<%= form_for([@article,@comment]) do |f| %><p>名前:<%= f.text_field :user_name %>コメント: <%= f.text_field :body %><%= f.submit '投稿' %></p><% end %>

app/views/article/show.html.erb

# coding: utf-8class CommentsController < ApplicationControllerdef create@comment = Comment.new(params[:comment])@comment.article_id = params[:article_id]@article = Article.find(params[:article_id])

if @comment.saveredirect_to @comment.article, notice: 'コメントは投稿されました'

elseredirect_to @article, notice: 'コメントの投稿に失敗しました'

endend

def destroy@comment = Comment.find(params[:id])@comment.destroy

redirect_to Article.find(params[:article_id]), notice: 'コメントは削除されました'end

end

コントローラ

app/controllers/comments_controller.rb

コメント機能完成

http://nseg-blog-2.heroku.com/articles

まとめ• Railsは使えると非常に便利

• 一般的なデータベースWebアプリケーション開発には強力• フルスタックの良さ

• 短期間で形になる• 商談中にプロトタイプをその場で作る!?

• 開発,デプロイ環境の構築は面倒(かもしれない)• 複数のRailsのバージョンの管理 → RVM• Passenger, Capistrano• Herokuというクラウドサービスの利用

• Gitでリポジトリをプッシュするだけで,デプロイ!!

おわり

top related