Ruby on Rails
インストールから簡単なアプリの
構築まで
何故、 Ruby on rails なのか?
それは、そこに山があるから
• シェアが高い
– 多くの人が改良しているので枯れている
– ドキュメントが豊富
– 需要がある
• rails の思想を学ぶことにより優れた設計
を身につけたい。
• たまには新しい言語を試したい。。。
(おぃ
ではなくて、以下の理由からで...
本当にシェアが高いの?
各言語の代表的なフレームワークを
Google Trend で調べてみた。
まずは世界
rails が数多く検索され CakePHP が
追い上げています。
次に日本
CakePHP が rails を抜いて上昇中
もう rails に決定しているので
見なかったことに。。。(おぃ
CakePHP と比較し
• 翻訳された日本語ドキュメントが豊富
– rails は Web ドキュメントが分散されている
• php 使いは多い
• ほぼ全てのサーバーは標準で php が使える
• rails の欠点である View で使用...
次に、お詫びを。。。(汗
Linux 系に絞って話をします。
Windows の方ごめんなさい m (__) m
まずは ruby のインストール
インストールしようと思ったら
ruby1.8 と 1.9 があるでは
あーりませんか!
どう違うんだろう。。。。
調べてみた。
ruby1.9 の主張を円グラフに。。。
•YARV による処理速度の向上
•M17N (多言語化)のサポート
•軽量なスレッドを実現する Fiber の導入
•RubyGems( ライブラリ管理 ) の標準付属
•Rake(make ruby 版 ) の標準付属
真面目に変更点をリス...
人柱になっている余裕が無いので
今回は ruby1.8 を使います。
ひっぱいといて
ごめんなさい m (__) m
補足として安定&高速動作を
お求めの方には JRuby という
JavaVM 上で動く物がございます。。。
JRuby は Java のライブラリも
使用出来るようでございます。
また、使用メモリを 33% 削減した
Ruby Enterpri...
とりあえず ruby をインストール
Ubuntu
# apt-get install ruby
# apt-get install ruby-devel
# apt-get install rubygems
Fedora
# yum inst...
ここで rubygems について解説
php に置ける pear
perl に置ける CPAN
debian/ubuntu/Vine に置ける apt
Fedora に置ける yum
のような物です。。。
gem を使って rails をインストール
# gem install rails 
--include-dependencies
rails とその依存しているものを
全てインストールしてくれます。
次に rails アプリを呼び出して
くれる実行環境をインストール
むむむ。。。。
人生いろいろ
サーバーもいろいろ
実行環境を調べてみる
主な実行環境
• apache cgi
• apache+FastCGI
• Webrick
• Mongrel
• thin
• Ebb
• apache+Passenger(mod_rails)
apache cgi
• とにかく遅い!!
問題外??
apache+FastCGI
• 動作速度はプロセス常駐型で○
• 設定が面倒
Webrick
• ruby 標準添付
• 設定簡単
• cgi ほどではないが遅い
• テスト環境のみで使用するのがよ
さげ
Mongrel
• gem で即導入
• rails の実行が早い
• 通常の処理は遅い
• 他の Web サーバーと組み合わせ
る必要有り
• 作者がグレた。。。
thin
• gem で即導入
• Mongel より rails の実行が早い
• 通常のリクエストの処理は遅い
• 他の Web サーバーと組み合わせ
て使用する必要あり
Ebb
• gem で即導入
• thin より rails の実行が早い
• 通常のリクエストの処理は遅い
• 他の Web サーバーと組み合わせ
て使用する必要あり
apache+Passenger
• gem で即導入
• rails の実行が早い
• apache モジュールとして動作
• apache で完結出来る
• Windows は未対応
Passenger のベンチ ( 大本営発
表 )
実行環境比較結論
調べた結果、動作速度は以下の順
Ebb>= apache+Passenger
>thin>Mongrel>Webrick>cgi
(FastCGI は比較が発見できず )
実使用に耐えれる環境の構築のしやす
さは apache...
前準備として apache インスト
ール
Ubuntu
# apt-get install apache2
# apt-get install apache2-threaded-dev
# apt-get install g++
Fedora...
passenger のインストール (1)
Ubuntu 、 fedora 共通
# gem install passenger 
--include-dependencies
Ubuntu のみ
# export   
PATH=$PATH:...
passenger のインストール (2)
1 を選択
passenger のインストール (3)
必要ソフトウェアのチェック
インストールされていないものが
あればインストール
passenger のインストール (4)
apache の設定ファイルに
赤丸の内容を追加します。
apache の設定 (Fedora)
# cd /etc/apache2/conf.d
# touch passenger.conf
# << 好きなエディタ >> passenger.conf
さっきの内容をコピー&ペースト
# /etc/...
apache の設定 | Ubuntu(1)
# cd /etc/apache2/mods-available
# touch passenger.conf passenger.load
# << 好きなエディタ >> passenger.lo...
apache の設定 | Ubuntu(2)
# << 好きなエディタ >> passenger.conf
以下の行を追加
<IfModule mod_passenger.c>
# バージョンによってパスが違うので注意
PassengerRoo...
apache の設定 | Ubuntu(3)
# a2enmod
Which module would you like to enable?
Your choices are: actions alias asis auth_basic au...
apache のバーチャルホストに
rails
プロジェクトのルートディレク
トリを登録して終了です。
<VirtualHost *:80>
ServerName サーバー名
DocumentRoot rails プロジェクトのパス
# もし DocumentRoot が rails プロジェクト
の
# ルートディレクトリで無い場合は以下で
指...
環境が整ったところで
rails の説明
まず以下のコマンドで
rails プロジェクトを作成します。
$ rails プロジェクト名
すると rails アプリの実行に必要な
ファイルがコピーされます。
次に MCV に沿って話をします。
( あれ?順序が。。。 )
rails の MVC モデル
まつもと直伝 プログラミングのオキテ 第20回 MVCとRuby on Rails:
ITpro
rails のモデル規則を簡単に説明
• 主キーはオートナンバー
• ”主キーのカラム名は id”( 推奨 )
• テーブル名は複数形 ( 推奨 )
• ”リレーションを張るカラム名は 単数形 _id” ( 推
奨 )
• レコード作成日を自動...
rails のモデルで何するの?
データベースを完全隠蔽化し、どんな
DB でも共通した手順を提供します。
モデルには何を書くの?
• 各テーブル間のリレーションの記述
• 変更されたらメールする、ロギング等の
トリガー動作
などなど
app/models/ モデル名 .rb にモデルの制御を書きま
す。
とりあえずモデルの作成
$ script/generate model entry
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/ent...
データベースの設定
データベースは
プロジェク
ト /config/database.yml
で設定します。
production:
adapter: mysql
database: redmine_development
host: localhost
username: root
password:
encoding: utf8
database....
テーブルの定義
テーブルの定義は直接 DB に行う
ことも出来ますが
プロジェクト /db/migrate/
の中のファイルでやると、バージ
ョンを戻したり、 DB の再構築が
簡単に出来て便利です。
db/migrate/ のファイル説明
バージョン _foo_hogehoge.rb
というファイル命名規則になってい
ます。
ファイルの先頭のバージョンで DB
構造を戻したりすることが出来ます
。
db/migrate/VERSION_create_ テーブル
名 .rb
の設定例
class CreateEntries < ActiveRecord::Migration
def self.up
create_table :entries...
テーブル作成
以下で DB にテーブルを作成出来ます。
$ rake db:migrate
バージョンを指定するには以下
$ rake db:migrate VERSION= バージョン
ダウングレートするには
$ rake db:migrat...
$ rake db:migrate VERSION=0001 RAILS_ENV=production
(in /home/fuku/rails/hello)
== CreateEntries: migrating
==============...
次にコントローラをざっくり説
明
コントローラとは、ユーザーか
らの入力を受け、ビューやモデ
ルを操作するオブジェクトです
。
dispatcher
コントローラの構造をざくっと説明
ルーティングの決定
コントローラ
( どのコントローラのアクションを
実行するかの決定 )
config/routes.rb
コントローラの処理を書く、
ApplicationContro...
$ script/generate controller bbs
exists app/controllers/
exists app/helpers/
create app/views/bbs
exists test/functional/
...
基本となる index アクションを作成
class BbsController < ApplicationController
def index
@entries = Entry.find(:all)
end
end entry モデル
モ...
次に View の作成
script/generate のオプションに
VIew
が無い。。。
app/views/ コントローラ名 / アクション
名 .rhtml
以下のファイル名で View を
手動で作成します。
例では bbs コントローラの index
アクションの View なのでファイル
名は以下
app/views/bb...
<html>
<head>
<title> テスト掲示板 </title>
<meta http-equiv="Content-Style-Type" content="text/css" />
<%= stylesheet_link_tag ...
$ script/server –e 環境名
で rails 実行環境を起動すると以下のように
passenger(mod_rails)
では production 環境で
動作します。
これではいくら簡単な物と言っ
ても寂しいので投稿機能を足し
ます。
def add_entry
@entry = Entry.new(params[:new_entry])
if @entry.save
redirect_to(:action => "index")
else
render_text " 登録で...
<%= form_tag :action=>"add_entry" %>
<dl>
<dt> タイトル </dt>
<dd><%= text_field("new_entry", "title", "size"=>16) %></dd>
<dt...
こんな感じになりました。
個人的まとめ
• Rails の真髄はどこに何が記述されている
かが明確になることと見つけたり
• 規約に法ることで処理を省略し楽できま
す。
• 開発効率は開発言語 + テンプレートエン
ジンより DB を意識しなくなる分早くなる
• 関数呼...
Upcoming SlideShare
Loading in...5
×

パワーポイント資料 - ふっくんのブログっぽいサイト - 変人プログラマ ...

24,322
-1

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
24,322
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

パワーポイント資料 - ふっくんのブログっぽいサイト - 変人プログラマ ...

  1. 1. Ruby on Rails インストールから簡単なアプリの 構築まで
  2. 2. 何故、 Ruby on rails なのか?
  3. 3. それは、そこに山があるから
  4. 4. • シェアが高い – 多くの人が改良しているので枯れている – ドキュメントが豊富 – 需要がある • rails の思想を学ぶことにより優れた設計 を身につけたい。 • たまには新しい言語を試したい。。。 (おぃ ではなくて、以下の理由からです。
  5. 5. 本当にシェアが高いの?
  6. 6. 各言語の代表的なフレームワークを Google Trend で調べてみた。
  7. 7. まずは世界 rails が数多く検索され CakePHP が 追い上げています。
  8. 8. 次に日本 CakePHP が rails を抜いて上昇中
  9. 9. もう rails に決定しているので 見なかったことに。。。(おぃ
  10. 10. CakePHP と比較し • 翻訳された日本語ドキュメントが豊富 – rails は Web ドキュメントが分散されている • php 使いは多い • ほぼ全てのサーバーは標準で php が使える • rails の欠点である View で使用するテンプ レートをデザイナさんが使い慣れた物に切り 替えすることが出来る。 ということで CakePHP が良いのかも
  11. 11. 次に、お詫びを。。。(汗
  12. 12. Linux 系に絞って話をします。 Windows の方ごめんなさい m (__) m
  13. 13. まずは ruby のインストール
  14. 14. インストールしようと思ったら ruby1.8 と 1.9 があるでは あーりませんか!
  15. 15. どう違うんだろう。。。。
  16. 16. 調べてみた。
  17. 17. ruby1.9 の主張を円グラフに。。。
  18. 18. •YARV による処理速度の向上 •M17N (多言語化)のサポート •軽量なスレッドを実現する Fiber の導入 •RubyGems( ライブラリ管理 ) の標準付属 •Rake(make ruby 版 ) の標準付属 真面目に変更点をリストにすると 以下の通り
  19. 19. 人柱になっている余裕が無いので 今回は ruby1.8 を使います。 ひっぱいといて ごめんなさい m (__) m
  20. 20. 補足として安定&高速動作を お求めの方には JRuby という JavaVM 上で動く物がございます。。。 JRuby は Java のライブラリも 使用出来るようでございます。 また、使用メモリを 33% 削減した Ruby Enterprise Edition もございます。
  21. 21. とりあえず ruby をインストール Ubuntu # apt-get install ruby # apt-get install ruby-devel # apt-get install rubygems Fedora # yum install ruby # yum install ruby-devel # yum install rubygems
  22. 22. ここで rubygems について解説
  23. 23. php に置ける pear perl に置ける CPAN debian/ubuntu/Vine に置ける apt Fedora に置ける yum のような物です。。。
  24. 24. gem を使って rails をインストール # gem install rails --include-dependencies rails とその依存しているものを 全てインストールしてくれます。
  25. 25. 次に rails アプリを呼び出して くれる実行環境をインストール
  26. 26. むむむ。。。。 人生いろいろ サーバーもいろいろ
  27. 27. 実行環境を調べてみる
  28. 28. 主な実行環境 • apache cgi • apache+FastCGI • Webrick • Mongrel • thin • Ebb • apache+Passenger(mod_rails)
  29. 29. apache cgi • とにかく遅い!! 問題外??
  30. 30. apache+FastCGI • 動作速度はプロセス常駐型で○ • 設定が面倒
  31. 31. Webrick • ruby 標準添付 • 設定簡単 • cgi ほどではないが遅い • テスト環境のみで使用するのがよ さげ
  32. 32. Mongrel • gem で即導入 • rails の実行が早い • 通常の処理は遅い • 他の Web サーバーと組み合わせ る必要有り • 作者がグレた。。。
  33. 33. thin • gem で即導入 • Mongel より rails の実行が早い • 通常のリクエストの処理は遅い • 他の Web サーバーと組み合わせ て使用する必要あり
  34. 34. Ebb • gem で即導入 • thin より rails の実行が早い • 通常のリクエストの処理は遅い • 他の Web サーバーと組み合わせ て使用する必要あり
  35. 35. apache+Passenger • gem で即導入 • rails の実行が早い • apache モジュールとして動作 • apache で完結出来る • Windows は未対応
  36. 36. Passenger のベンチ ( 大本営発 表 )
  37. 37. 実行環境比較結論 調べた結果、動作速度は以下の順 Ebb>= apache+Passenger >thin>Mongrel>Webrick>cgi (FastCGI は比較が発見できず ) 実使用に耐えれる環境の構築のしやす さは apache+Passenger が群を抜い ているとのことで、 apache+Passenger を導入すること に
  38. 38. 前準備として apache インスト ール Ubuntu # apt-get install apache2 # apt-get install apache2-threaded-dev # apt-get install g++ Fedora # yum install httpd # yum install httpd-devel # yum install gcc-c++
  39. 39. passenger のインストール (1) Ubuntu 、 fedora 共通 # gem install passenger --include-dependencies Ubuntu のみ # export   PATH=$PATH:/var/lib/gems/1.8/bin/ Ubuntu 、 fedora 共通 # passenger-install-apache2-module
  40. 40. passenger のインストール (2) 1 を選択
  41. 41. passenger のインストール (3) 必要ソフトウェアのチェック インストールされていないものが あればインストール
  42. 42. passenger のインストール (4) apache の設定ファイルに 赤丸の内容を追加します。
  43. 43. apache の設定 (Fedora) # cd /etc/apache2/conf.d # touch passenger.conf # << 好きなエディタ >> passenger.conf さっきの内容をコピー&ペースト # /etc/init.d/apache2 restart 確認 # apache2ctl –M | grep passenger passenger_module が含まれていたら OK
  44. 44. apache の設定 | Ubuntu(1) # cd /etc/apache2/mods-available # touch passenger.conf passenger.load # << 好きなエディタ >> passenger.load 以下の行を追加 LoadModule passenger_module /var/lib/gems/1.8/gems/passenger- 2.0.3/ext/apache2/mod_passenger.so # バージョンによってパスが違うため注意
  45. 45. apache の設定 | Ubuntu(2) # << 好きなエディタ >> passenger.conf 以下の行を追加 <IfModule mod_passenger.c> # バージョンによってパスが違うので注意 PassengerRoot /var/lib/gems/1.8/gems/passenger-2.0.3 # Ruby Enterprise Edition を使用する場合は以下のパスを変更 #PassengerRuby /usr/bin/ruby1.8 PassengerRuby /opt/ruby-enterprise/bin/ruby </IfModule>
  46. 46. apache の設定 | Ubuntu(3) # a2enmod Which module would you like to enable? Your choices are: actions alias asis auth_basic auth_digest authn_alias authn_anon authn_dbd authn_dbm authn_default authn_file authnz_ldap authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cern_meta cgi cgid charset_lite dav dav_fs dav_lock dbd deflate dir disk_cache dump_io env expires ext_filter file_cache filter headers ident imagemap include info ldap log_forensic mem_cache mime mime_magic negotiation passenger proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http rewrite setenvif speling ssl status substitute suexec unique_id userdir usertrack version vhost_alias Module name? passenger This module is already enabled! # /etc/init.d/apache2 restart a2enmod で passenger モジュールを追加 ( ただ リンクを張るだけですが。。。 ) し、 apache 再 起動
  47. 47. apache のバーチャルホストに rails プロジェクトのルートディレク トリを登録して終了です。
  48. 48. <VirtualHost *:80> ServerName サーバー名 DocumentRoot rails プロジェクトのパス # もし DocumentRoot が rails プロジェクト の # ルートディレクトリで無い場合は以下で 指定 # RailsBaseURI /rails </VirtualHost>
  49. 49. 環境が整ったところで rails の説明
  50. 50. まず以下のコマンドで rails プロジェクトを作成します。 $ rails プロジェクト名 すると rails アプリの実行に必要な ファイルがコピーされます。
  51. 51. 次に MCV に沿って話をします。 ( あれ?順序が。。。 )
  52. 52. rails の MVC モデル まつもと直伝 プログラミングのオキテ 第20回 MVCとRuby on Rails: ITpro
  53. 53. rails のモデル規則を簡単に説明 • 主キーはオートナンバー • ”主キーのカラム名は id”( 推奨 ) • テーブル名は複数形 ( 推奨 ) • ”リレーションを張るカラム名は 単数形 _id” ( 推 奨 ) • レコード作成日を自動入力したいならば created_on • レコード作成日時を自動入力したいならば created_at • レコード更新日を自動入力したいならば update_on • レコード更新日時を自動入力したいならば update_at まだまだありますが、命名規則によって 処理を書かなくても良い仕組みがいっぱ
  54. 54. rails のモデルで何するの? データベースを完全隠蔽化し、どんな DB でも共通した手順を提供します。
  55. 55. モデルには何を書くの? • 各テーブル間のリレーションの記述 • 変更されたらメールする、ロギング等の トリガー動作 などなど app/models/ モデル名 .rb にモデルの制御を書きま す。
  56. 56. とりあえずモデルの作成 $ script/generate model entry exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/entry.rb create test/unit/entry_test.rb create test/fixtures/entries.yml create db/migrate create db/migrate/20081207091540_create_entries.rb DB 接続設定 ActiveRecord を継承し、 処理を記述するにはこのファイル テーブルの定義 entry モデルの雛形の作成をします 。
  57. 57. データベースの設定 データベースは プロジェク ト /config/database.yml で設定します。
  58. 58. production: adapter: mysql database: redmine_development host: localhost username: root password: encoding: utf8 database.yml の例 この設定だけで殆どの場合 DB の違い を意識することなく DB を扱えます。
  59. 59. テーブルの定義 テーブルの定義は直接 DB に行う ことも出来ますが プロジェクト /db/migrate/ の中のファイルでやると、バージ ョンを戻したり、 DB の再構築が 簡単に出来て便利です。
  60. 60. db/migrate/ のファイル説明 バージョン _foo_hogehoge.rb というファイル命名規則になってい ます。 ファイルの先頭のバージョンで DB 構造を戻したりすることが出来ます 。
  61. 61. db/migrate/VERSION_create_ テーブル 名 .rb の設定例 class CreateEntries < ActiveRecord::Migration def self.up create_table :entries do |t| t.column :title, :string, :null => false t.column :name, :string, :default => " 名無し ", :null => false t.column :mail, :string, :null => false t.column :body, :text, :null => false t.column :created_on, :datetime, :null => false end end def self.down drop_table :entries end end self.up メソッドはバージョンアップ時実 行 self.down はバージョンダウン時実行
  62. 62. テーブル作成 以下で DB にテーブルを作成出来ます。 $ rake db:migrate バージョンを指定するには以下 $ rake db:migrate VERSION= バージョン ダウングレートするには $ rake db:migrate:down VERSION= バージョン 環境を指定するには RAILS_ENV = 環境名 先ほどの例では entries テーブル が作成されます。
  63. 63. $ rake db:migrate VERSION=0001 RAILS_ENV=production (in /home/fuku/rails/hello) == CreateEntries: migrating ============================================= ===== -- create_table(:entries) -> 0.0257s == CreateEntries: migrated (0.0583s) ========================================= テーブル作成例 以下では VERSION=0001 で production 環境の DB を構築していま す。
  64. 64. 次にコントローラをざっくり説 明 コントローラとは、ユーザーか らの入力を受け、ビューやモデ ルを操作するオブジェクトです 。
  65. 65. dispatcher コントローラの構造をざくっと説明 ルーティングの決定 コントローラ ( どのコントローラのアクションを 実行するかの決定 ) config/routes.rb コントローラの処理を書く、 ApplicationController を継承 app/controllers/ コントローラ名 _controller.rb ApplicationController コントローラで共通した処理を書く app/controllers/application.rb HTTP リクエスト
  66. 66. $ script/generate controller bbs exists app/controllers/ exists app/helpers/ create app/views/bbs exists test/functional/ create app/controllers/bbs_controller.rb create test/functional/bbs_controller_bbs.rb create app/helpers/bbs_helper.rb とりあえずコントローラの作成 bbs コントローラの雛形の作成をしま す。 コントローラ本体 ビューで使用するヘルパー View を保存するディレクトリ 一緒に View に関するものも作成され ます。
  67. 67. 基本となる index アクションを作成 class BbsController < ApplicationController def index @entries = Entry.find(:all) end end entry モデル モデルオブジェクトの頭は大文字 find メソッドで entries テーブルを select 全てのレコード レコードは all なので配列で返る action 名 これだけで entries テーブルの中身を @entries 配列に全て取り出す処理の完成
  68. 68. 次に View の作成 script/generate のオプションに VIew が無い。。。
  69. 69. app/views/ コントローラ名 / アクション 名 .rhtml 以下のファイル名で View を 手動で作成します。 例では bbs コントローラの index アクションの View なのでファイル 名は以下 app/views/bbs/index.rhtml
  70. 70. <html> <head> <title> テスト掲示板 </title> <meta http-equiv="Content-Style-Type" content="text/css" /> <%= stylesheet_link_tag "style.css" %> </head> <body> <h1> テスト掲示板 </h1> <% @entries.each do |@entry| %> <dl> <dt> タイトル </dt> <dd><%=h @entry.title %> </dd> <dt> 名前 </dt> <dd><%=h @entry.name %> </dd> <dt> メールアドレス </dt> <dd><%=h @entry.mail %> </dd> <dt> 本文 </dt> <dd><%=h @entry.body %> </dd> </dl> <% end %> </body> </html> View を記述
  71. 71. $ script/server –e 環境名 で rails 実行環境を起動すると以下のように passenger(mod_rails) では production 環境で 動作します。
  72. 72. これではいくら簡単な物と言っ ても寂しいので投稿機能を足し ます。
  73. 73. def add_entry @entry = Entry.new(params[:new_entry]) if @entry.save redirect_to(:action => "index") else render_text " 登録できませんでした。 " end end app/controllers/bbs_controller.rb に以下のアクション ( メソッド? ) を 追加
  74. 74. <%= form_tag :action=>"add_entry" %> <dl> <dt> タイトル </dt> <dd><%= text_field("new_entry", "title", "size"=>16) %></dd> <dt> 名前 </dt> <dd><%= text_field("new_entry", "name", "size"=>16) %></dd> <dt> メールアドレス </dt> <dd><%= text_field("new_entry", "mail", "size"=>32) %></dd> <dt> 本文 </dt> <dd><%= text_area("new_entry", "body", "cols"=>60, "rows"=>10) %></dd> </dl> <input type="submit" value="Add" /> </form> app/views/bbs/index.rhtml に以下を追加
  75. 75. こんな感じになりました。
  76. 76. 個人的まとめ • Rails の真髄はどこに何が記述されている かが明確になることと見つけたり • 規約に法ることで処理を省略し楽できま す。 • 開発効率は開発言語 + テンプレートエン ジンより DB を意識しなくなる分早くなる • 関数呼び出しを主体にする言語の使い手 にとっては rails より ruby 言語の特徴に戸 惑います。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×