Ruby on Railsの紹介
-
date post
11-Sep-2014 -
Category
Technology
-
view
12 -
download
2
description
Transcript of Ruby on Railsの紹介
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でリポジトリをプッシュするだけで,デプロイ!!
おわり