ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (1〜2)/全46

#主な内容
[#01 Ruby on Railsとは何か？](http://dotinstall.com/lessons/basic_rails/6501 "#01 Ruby on Railsとは何か？")

Ruby on Railsはこんなものですよ
必要な情報はここら辺で集まりますよ
必要な知識にはこんなものがありますよ

[#02 必要となるツールを揃えよう](http://dotinstall.com/lessons/basic_rails/6502 "#02 必要となるツールを揃えよう")

開発環境はこんな感じですよ

#Ruby on Railsとは
Webアプリケーションフレームワーク

* Webアプリケーション

>Twitterや楽天みたいなWeb上で動作するアプリケーション。

* フレームワーク

>直訳すると「枠組み」のことで、開発の世界では「ある特定種類のシステム（サービス）が最低限動作する枠組みとその動作や開発の際に頻繁に必要とされる汎用的な機能を提供するソフトウェア」のことです。アプリケーションの土台。

#必要な知識
###Ruby on Railsを理解するためには以下の知識が必要です。
* Ruby

>RailsはRubyのライブラリのひとつなのでRubyの知識は必須です。

* SQLite

>Railsは標準でSQLiteというデータベースを使っているので必須です。

* Linux/Vim

>Terminalでコマンドを実行したり、Vimというテキストエディタで編集もしていくので基本的操作は知っている必要があります。

* html/css/javascript/jQuery

>RailsはWebアプリケーション開発のためのフレームワークです。ということはWeb周辺の知識（デザインや簡単な処理）は知っている必要があります。

#必要なツール
* Ruby
>バージョンによって操作方法などが違うので注意が必要です。
>バージョンごとの違いについては[こちら](http://www.ownway.info/Ruby/index.php?version "こちら")を参照してください。

* RubyGems
>Gemと呼ばれるRubyの便利なライブラリを管理するシステム。
>gemというコマンドで操作できる.
>Ruby1.9以降のバージョンでは標準ライブラリの一部として自動的にインストールされるのであまり意識しなくて良いです。でも、そういうものだということは知っておくべきです。

* Rails
>Rubyのバージョンにものすごく依存するので、公式で推奨されているバージョンを使うべきです。
>（例）Rails3.2を使うときはRuby1.9.3が推奨
>（例）Rails4.0.3を使うときはRuby2.1.0が推奨

* SQLite
>Railsで標準で使われているデータベース

* Homebrew
>Rubyのバージョン切替などの管理システム

#準備（開発環境をドットインストールにあわせる）
上で言った通り、RailsはRubyのバージョンにかなり依存しています。
なので、使いたいRailsのバージョンにあわせてRubyのバージョンを切り替えます。
そこで便利なRubyやRubyGemsのバージョン管理システムのHomebrewを使います。
##Rubyの準備
ドットインストールではRails3.2.3を用いているので、Rubyは公式で推奨されているバージョン1.9.3を使うべきです。

###既にインストールされているRubyのバージョンを確認
```bash:Terminal
$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0]
```
ruby 2.1.0p0というバージョンでした。

###Homebrewを用いてRubyをインストール
ドットインストールでRuby1.9.3-p125を用いているのでHomebrewを用いてRuby1.9.3-p125をインストールします。

```bash:Terminal
$ sudo rbenv install 1.9.3-p125
Password:
Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/shiraihiroki/.rbenv/versions/1.9.3-p125

Downloading ruby-1.9.3-p125.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e3ea86b9d3fc2d3ec867f66969ae3b92
Installing ruby-1.9.3-p125...
Installed ruby-1.9.3-p125 to /Users/shiraihiroki/.rbenv/versions/1.9.3-p125

Downloading rubygems-1.8.23.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/178b0ebae78dbb46963c51ad29bb6bd9
Installing rubygems-1.8.23...
Installed rubygems-1.8.23 to /Users/shiraihiroki/.rbenv/versions/1.9.3-p125
```
すでにこのバージョンがインストールされている場合は次のようなものが出力されるので、yを入力して再インストールしてしまえば良いでしょう。Nを入力すると再インストールはされません。

```bash:Terminal
$ sudo rbenv install 1.9.3-p125
Password:
rbenv: /Users/shiraihiroki/.rbenv/versions/1.9.3-p125 already exists
continue with installation? (y/N) y     ←ココでyを入力しました！
Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/shiraihiroki/.rbenv/versions/1.9.3-p125

Downloading ruby-1.9.3-p125.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e3ea86b9d3fc2d3ec867f66969ae3b92
Installing ruby-1.9.3-p125...
Installed ruby-1.9.3-p125 to /Users/shiraihiroki/.rbenv/versions/1.9.3-p125

Downloading rubygems-1.8.23.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/178b0ebae78dbb46963c51ad29bb6bd9
Installing rubygems-1.8.23...
Installed rubygems-1.8.23 to /Users/shiraihiroki/.rbenv/versions/1.9.3-p125

```
###インストールしたrubyやgemのパスを通す
```bash:Terminal
$ rbenv rehash
```
コマンドラインにはなにも出力されずに処理が終了します。
これをしないとインストールしたRubyやGemを使えません。
~/.rbenv/shims ディレクトリにインストールしたrubyやgemを起動するための実行ファイルを自動で作成してくれます。
###Rubyのバージョンを1.9.3-p125に切り替える
```bash:Terminal
$ rbenv global 1.9.3-p125 
```
コマンドラインにはなにも出力されずに処理が終了します。
Rubyのグローバル化 笑
バージョン切替です。

###Rubyのバージョンが切り替わっているか確認
```bash:Terminal
$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin12.5.0]
```
完璧です。
##RubyGemsの準備
Railsやその他Gemをインストール、管理するためのRubyGemを準備します。ドットインストールでは1.8.23を用いているので、それをインストールします。
###既にインストールされているRubyGemsのバージョンを確認
```bash:Terminal
$ gem list rubygems-update

*** LOCAL GEMS ***

rubygems-update (2.2.2)
```
2.2.2でした。ちなみに、rubygems-updateなのは、RubyGemsのアップデートだからです。そのままですね笑。
###既にインストールされているRubyGemsのアンインストール
RubyGemsをダウングレードします。

```bash:Terminal
$ sudo gem uninstall rubygems-update -v 2.2.2
Password:
Remove executables:
	update_rubygems

in addition to the gem? [Yn]  y     ←ココでyを入力しました！
Removing update_rubygems
Successfully uninstalled rubygems-update-2.2.2
```
###アンインストールできたか確認
```bash:Terminal
$ gem list rubygems-update

*** LOCAL GEMS ***


```
OK
###バージョンを指定してRubyGemsをインストール
```bash:Terminal
$ sudo gem install rubygems-update -v 1.8.23
Fetching: rubygems-update-1.8.23.gem (100%)
Successfully installed rubygems-update-1.8.23
Installing ri documentation for rubygems-update-1.8.23
1 gem installed
```
###インストールしたRubyGemsをインストール（変な感じですが笑）
```bash:Terminal
$ sudo update_rubygems
RubyGems 1.8.23 installed

== 1.8.23 / 2012-04-19

This release increases the security used when RubyGems is talking to
an https server. If you use a custom RubyGems server over SSL, this
release will cause RubyGems to no longer connect unless your SSL cert
is globally valid.

You can configure SSL certificate usage in RubyGems through the
:ssl_ca_cert and :ssl_verify_mode options in ~/.gemrc and /etc/gemrc.
The recommended way is to set :ssl_ca_cert to the CA certificate for
your server or a certificate bundle containing your CA certification.

You may also set :ssl_verify_mode to 0 to completely disable SSL
certificate checks, but this is not recommended.


* 2 security fixes:
  * Disallow redirects from https to http
  * Turn on verification of server SSL certs

* 1 minor feature:
  * Add --clear-sources to fetch

* 2 bug fixes:
  * Use File.identical? to check if two files are the same.
  * Fixed init_with warning when using psych


------------------------------------------------------------------------------

RubyGems installed the following executables:
	/Users/shiraihiroki/.rbenv/versions/1.9.3-p125/bin/gem

```
###RubyGemsのバージョンを確認
```bash:Terminal
$ gem list rubygems-update

*** LOCAL GEMS ***

rubygems-update (1.8.23)
```
###RubyGemsのバージョンを確認
```bash:Terminal
$ gem -v
1.8.23
```
完璧です。
##Railsの準備
ドットインストールではRails3.2.3を用いているので、Rails3.2.3をインストールしましょう。RailsはRubyの便利なライブラリ（Gem）のひとつなので、RubyGemsを使ってインストールします。
###RubyGemsを用いてRailsをインストール
Railsの動作に必要なGemも自動でインストールされます。ちなみに、Rubyのバージョンを切り替えているので、これらのGemはRuby1.9.3p125の環境下にインストールされ、ほかのRuby環境（2.1.0p0など）には影響しません。これがHomebrewの力です。

```bash:Terminal（エラーがでます。）
$ sudo gem install rails -v 3.2.3
Password:
Successfully installed rails-3.2.3
1 gem installed
Installing ri documentation for rails-3.2.3...
file 'lib' not found
Installing RDoc documentation for rails-3.2.3...
file 'lib' not found
```
`file 'lib' not found`・・・libというファイルが無いというエラーが出ています。いろいろと調べてみるとlibはフォルダのようで、解決方法として以下の３つがありました。

1. libフォルダを作成してしまう。
1. 先にrdocでGemのリファレンスを生成してしまう（ついでにriに対応）。
1. もはやrdocとriを使わない。

１と３は結果的に同じようなことなので、２を選択することにします。Rdoc便利そうですし。
ちなみに、rdocはRubyで書かれたソースコードからドキュメントを自動生成するライブラリで、riはそれをコマンドラインから確認できるという便利なツールです。

###rdocをインストール
Ruby1.9.3でのrdocのバージョンは3.12のようなので3.12をインストールします。

```bash:Terminal
$ sudo gem install rdoc -v 3.12
Password:
Fetching: rdoc-3.12.gem (100%)
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Successfully installed rdoc-3.12
1 gem installed
Installing ri documentation for rdoc-3.12...
Installing RDoc documentation for rdoc-3.12...
```
###もう一度RubyGemsを用いてRailsをインストール
```bash:Terminal
$ sudo gem install rails -v 3.2.3 --no-ri --no-rdoc
Fetching: rails-3.2.3.gem (100%)
Successfully installed rails-3.2.3
1 gem installed
```
>` --no-ri --no-rdoc`はriをインストールしない、rdocをインストールしないというオプションです。これらはドキュメントなのでアプリケーションの動作に影響はなく、さらに上の操作でインストール済みなので必要ありません。

###インストールしたgemのパスを通す
gemをインストールしたのでパスを通します。

```bash:Terminal
$ rbenv rehash
```
###Rubyのバージョンが切り替わっているか確認
```bash:Terminal
$ rails -v
Rails 3.2.3
```
完璧です。
もし、Rails3.2.3をインストールして、バージョンを確認したときに違うバージョンのRailsが表示されたら、標準でインストールされているRailsの可能性があります。アンインストールしてしまいましょう。
（例）Rails4.0.3が表示された

```bash:Terminal
$ sudo gem uninstall railties -v '4.0.3'
Password:
Successfully uninstalled railties-4.0.3
```
###
```bash:Terminal
$ rails -v
Rails 3.2.3
```
##SQLite3の準備
###既にビルド（インストール）されているSQLite3のバージョンを確認
```bash:Terminal
$ sqlite3
SQLite version 3.7.12 2012-04-03 19:43:07
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
```
3.7.12でした。
###sqliteから抜ける（bashに戻る）
```bash:Terminal
sqlite> .exit
$ 
```
###sqlite3がビルドされているディレクトリを検索
```bash:Terminal
$ which sqlite3
/usr/bin/sqlite3
```
###sqlite3を削除
```bash:Terminal
$ rm /usr/bin/sqlite3
```
###sqlite3をダウンロード
http://www.sqlite.org/sqlite-amalgamation-ダウンロードしたいsqlite3のバージョン.tar.gz

```bash:Terminal
$ wget http://www.sqlite.org/sqlite-amalgamation-3.6.6.tar.gz
--2014-03-08 18:51:48--  http://www.sqlite.org/sqlite-amalgamation-3.6.6.tar.gz
Resolving www.sqlite.org... 67.18.92.124, 2600:3c00::f03c:91ff:fe96:b959
Connecting to www.sqlite.org|67.18.92.124|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1632065 (1.6M) [application/x-gzip]
Saving to: ‘sqlite-amalgamation-3.6.6.tar.gz’

100%[====================================================================================================================>] 1,632,065    516KB/s   in 3.1s   

2014-03-08 18:51:52 (516 KB/s) - ‘sqlite-amalgamation-3.6.6.tar.gz’ saved [1632065/1632065]

```
###ダウンロードした圧縮ファイルを解凍する
```bash:Terminal
$ tar xvzf sqlite-amalgamation-3.6.6.tar.gz
x sqlite-3.6.6/
x sqlite-3.6.6/depcomp
x sqlite-3.6.6/aclocal.m4
x sqlite-3.6.6/README
x sqlite-3.6.6/ltmain.sh
x sqlite-3.6.6/configure
x sqlite-3.6.6/README.update
x sqlite-3.6.6/shell.c
x sqlite-3.6.6/autom4te.cache/
x sqlite-3.6.6/autom4te.cache/requests
x sqlite-3.6.6/autom4te.cache/output.0
x sqlite-3.6.6/autom4te.cache/output.1
x sqlite-3.6.6/autom4te.cache/traces.0
x sqlite-3.6.6/autom4te.cache/traces.1
x sqlite-3.6.6/configure.ac
x sqlite-3.6.6/config.guess
x sqlite-3.6.6/install-sh
x sqlite-3.6.6/bootstrap.sh
x sqlite-3.6.6/manifest
x sqlite-3.6.6/config.sub
x sqlite-3.6.6/missing
x sqlite-3.6.6/sqlite3.c
x sqlite-3.6.6/sqlite3.h
x sqlite-3.6.6/Makefile.am
x sqlite-3.6.6/Makefile.in
x sqlite-3.6.6/sqlite3ext.h
x sqlite-3.6.6/INSTALL
x sqlite-3.6.6/manifest.uuid
```
`x`は失敗という意味ではないので心配無用です。
###解凍したsqlite3のディレクトリに移動
```bash:Terminal
$ cd sqlite-3.6.6/
```
###Makefileファイルを作成
インストールを行うOSのCPUやバージョン、必要な関連ツールを調査し、状況を記述したMakefileファイルを作成します。

```bash:Terminal
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out


〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
　　　　　　　     中略
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜


checking for library containing dlopen... none required
checking for whether to support dynamic extensions... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
```

###作成されたMakefileを基にしてソースコードをコンパイル
```bash:Terminal
$ make
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.6\" -DPACKAGE_STRING=\"sqlite\ 3.6.6\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.6\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_READLINE=1 -I. -I.    -DSQLITE_THREADSAFE=1  -g -O2 -MT sqlite3.lo -MD -MP -MF ".deps/sqlite3.Tpo" -c -o sqlite3.lo sqlite3.c; \
	then mv -f ".deps/sqlite3.Tpo" ".deps/sqlite3.Plo"; else rm -f ".deps/sqlite3.Tpo"; exit 1; fi
mkdir .libs
 gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=


〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
　　　　　　　     中略
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜


DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_READLINE=1 -I. -I.    -DSQLITE_THREADSAFE=1  -g -O2 -MT shell.o -MD -MP -MF ".deps/shell.Tpo" -c -o shell.o shell.c; \
	then mv -f ".deps/shell.Tpo" ".deps/shell.Po"; else rm -f ".deps/shell.Tpo"; exit 1; fi
shell.c:1182:20: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
    fprintf(stderr,zHelp);
                   ^~~~~
1 warning generated.
/bin/sh ./libtool --tag=CC --mode=link gcc -DSQLITE_THREADSAFE=1  -g -O2   -o sqlite3  shell.o ./libsqlite3.la -lreadline -lcurses  
gcc -DSQLITE_THREADSAFE=1 -g -O2 -o .libs/sqlite3 shell.o  ./.libs/libsqlite3.dylib -lreadline -lcurses 
creating sqlite3
```
いくつかwarningがでますが、特に影響はないので無視して良いです。
###makeで生成されたファイルを規定のディレクトリにコピー

```bash:Terminal
$ sudo make install
Password:
test -z "/usr/local/lib" || /Users/shiraihiroki/sqlite-3.6.6/install-sh -d "/usr/local/lib"
 /bin/sh ./libtool --mode=install /usr/bin/install -c  'libsqlite3.la' '/usr/local/lib/libsqlite3.la'
/usr/bin/install -c .libs/libsqlite3.0.8.6.dylib /usr/local/lib/libsqlite3.0.8.6.dylib
(cd /usr/local/lib && { ln -s -f libsqlite3.0.8.6.dylib libsqlite3.0.dylib || { rm -f libsqlite3.0.dylib && ln -s libsqlite3.0.8.6.dylib libsqlite3.0.dylib; }; })
(cd /usr/local/lib && { ln -s -f libsqlite3.0.8.6.dylib libsqlite3.dylib || { rm -f libsqlite3.dylib && ln -s libsqlite3.0.8.6.dylib libsqlite3.dylib; }; })
/usr/bin/install -c .libs/libsqlite3.lai /usr/local/lib/libsqlite3.la
/usr/bin/install -c .libs/libsqlite3.a /usr/local/lib/libsqlite3.a
chmod 644 /usr/local/lib/libsqlite3.a
ranlib /usr/local/lib/libsqlite3.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable
     during execution

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/usr/local/bin" || /Users/shiraihiroki/sqlite-3.6.6/install-sh -d "/usr/local/bin"
  /bin/sh ./libtool --mode=install /usr/bin/install -c 'sqlite3' '/usr/local/bin/sqlite3'
/usr/bin/install -c .libs/sqlite3 /usr/local/bin/sqlite3
test -z "/usr/local/include" || /Users/shiraihiroki/sqlite-3.6.6/install-sh -d "/usr/local/include"
 /usr/bin/install -c -m 644 'sqlite3.h' '/usr/local/include/sqlite3.h'
 /usr/bin/install -c -m 644 'sqlite3ext.h' '/usr/local/include/sqlite3ext.h'
```
###PATHを読込み直す or ターミナルを再起動
このコマンドでPATHが読み込み直されますが、このPATH設定ファイルはいくつかあり、全てを読込み直すのは面倒くさいので再起動するのが良いでしょう。

```bash:Terminal
source .bash_profile
```

###SQLite3のバージョンを確認
```bash:Terminal
$ sqlite3
SQLite version 3.6.6
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> 
```
###sqliteから抜ける（bashに戻る）
```bash:Terminal
sqlite> .exit
$ 
```
完璧です。

以上で環境の準備は整いました。

#よく参照しそうなURL
[[OFFICIAL]Ruby on Rails](http://rubyonrails.org/ "[OFFICIAL]Ruby on Rails")
>* 公式ドキュメント
>* 更新情報
>* など

[[OFFICIAL]Ruby on Rails Guides](http://guides.rubyonrails.org/ "[OFFICIAL]Ruby on Rails Guides")
>* 簡単なチュートリアル
>* MVCフレームワークに関する丁寧な説明
>* 

#メモ一覧
1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (1〜2)/全46](http://qiita.com/hirokishirai/items/34d26a40f99425333f79 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (1〜2)/全46")
>[#01	Ruby on Railsとは何か？](http://dotinstall.com/lessons/basic_rails/6501 "#01	Ruby on Railsとは何か？")
[#02	必要となるツールを揃えよう](http://dotinstall.com/lessons/basic_rails/6502 "#02	必要となるツールを揃えよう")
>
>* Ruby on Railsはこんなものですよ
>* 必要な情報はここら辺で集まりますよ
>* 必要な知識にはこんなものがありますよ
>* 開発環境はこんな感じですよ

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ 3/全46](http://qiita.com/hirokishirai/items/e0d3a7aa1de02ca2dbfc "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ 3/全46")
>[#03	MVCとは何か？](http://dotinstall.com/lessons/basic_rails/6503 "#03	MVCとは何か？")
>
>* Ruby on RailsはMVCフレームワークですよ
>* MVCはこんなものですよ

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (4〜8)/全46](http://qiita.com/hirokishirai/items/0038bbe5cd35ca92d60f "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (4〜8)/全46")
>[#04 はじめてのRailsプロジェクト](http://dotinstall.com/lessons/basic_rails/6504 "#04 はじめてのRailsプロジェクト")
[#05 ファイル構成をみていこう](http://dotinstall.com/lessons/basic_rails/6505 "#05 ファイル構成をみていこう")
アプリケーションを作成する基本的な流れを覚えましょう
>
>[#06 Webサーバーを立ち上げよう](http://dotinstall.com/lessons/basic_rails/6506 "#06 Webサーバーを立ち上げよう")
作成したWebアプリケーションをどうささせてみましょう
>
>[#07 scaffoldを使ってみよう (1)](http://dotinstall.com/lessons/basic_rails/6507 "#07 scaffoldを使ってみよう (1)")
[#08 scaffoldを使ってみよう (2)](http://dotinstall.com/lessons/basic_rails/6508 "#08 scaffoldを使ってみよう (2)")
DB、Model、View、Controllerの作成、URLの設定をしてみましょう

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (9〜13)/全46](http://qiita.com/hirokishirai/items/3c756d65fa837f765dc9 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (9〜13)/全46")
>[#09 ブログシステムを作ろう](http://dotinstall.com/lessons/basic_rails/6509 "#09 ブログシステムを作ろう")
[#10	新しいプロジェクトを作ろう](http://dotinstall.com/lessons/basic_rails/6510 "#10	新しいプロジェクトを作ろう")
[#11	Postモデルを作ろう](http://dotinstall.com/lessons/basic_rails/6511 "#11	Postモデルを作ろう")
[#12	Postsコントローラーを作ろう](http://dotinstall.com/lessons/basic_rails/6512 "#12	Postsコントローラーを作ろう")
[#13	ルーティングの設定をしよう](http://dotinstall.com/lessons/basic_rails/6513 "#13	ルーティングの設定をしよう")
Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）
プロジェクト、Model、Controllerを作成し、ルーティングの設定をしよう

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (14〜21)/全46](http://qiita.com/hirokishirai/items/9c9b02311a95fb6a2e5d "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (14〜21)/全46")
>[#14	デバッグに使えるコンソールについて](http://dotinstall.com/lessons/basic_rails/6514 "#14	デバッグに使えるコンソールについて")
[#15	コントローラーのメソッドについて](http://dotinstall.com/lessons/basic_rails/6515 "#15	コントローラーのメソッドについて")
[#16	記事の一覧を表示する (1)](http://dotinstall.com/lessons/basic_rails/6516 "#16	記事の一覧を表示する (1)")
[#17	記事の一覧を表示する (2)](http://dotinstall.com/lessons/basic_rails/6517 "#17	記事の一覧を表示する (2)")
[#18	リンクを貼ってみよう](http://dotinstall.com/lessons/basic_rails/6518 "#18	リンクを貼ってみよう")
[#19	HTMLテンプレートを変更しよう](http://dotinstall.com/lessons/basic_rails/6519 "#19	HTMLテンプレートを変更しよう")
[#20	ロゴ画像を表示させてみよう](http://dotinstall.com/lessons/basic_rails/6520 "#20	ロゴ画像を表示させてみよう")
[#21	記事一覧画面をrootにしてみよう](http://dotinstall.com/lessons/basic_rails/6521 "#21	記事一覧画面をrootにしてみよう")
>
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
`rails console`とか、`rails dbconsole`なんかの便利なツールがありますよ
コントローラーのメソッドと、それに対応するViewを作っていきましょう
>
>Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（まずは１つ）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (22〜23)/全46](http://qiita.com/hirokishirai/items/ba9bea6679ca1a1f8629 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (22〜23)/全46")
>[#22	記事の詳細を表示する (1)](http://dotinstall.com/lessons/basic_rails/6522 "#22	記事の詳細を表示する (1)")
[#23	記事の詳細を表示する (2)](http://dotinstall.com/lessons/basic_rails/6523 "#23	記事の詳細を表示する (2)")
>
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - show）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (24〜30)/全46](http://qiita.com/hirokishirai/items/979a1ca68716698ec103 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (24〜30)/全46")
>
[#24 新しい記事を追加しよう (1)](http://dotinstall.com/lessons/basic_rails/6524 "#24 新しい記事を追加しよう (1)")
[#25	新しい記事を追加しよう (2)](http://dotinstall.com/lessons/basic_rails/6525 "#25	新しい記事を追加しよう (2)")
[#26	新しい記事を追加しよう (3)](http://dotinstall.com/lessons/basic_rails/6526 "#26	新しい記事を追加しよう (3)")
[#27	バリデーションを設定しよう](http://dotinstall.com/lessons/basic_rails/6527 "#27	バリデーションを設定しよう")
[#28	バリデーションエラーを表示しよう](http://dotinstall.com/lessons/basic_rails/6528 "#28	バリデーションエラーを表示しよう")
[#29	フラッシュメッセージを表示する](http://dotinstall.com/lessons/basic_rails/6529 "#29	フラッシュメッセージを表示する")
[#30	メッセージをjQueryで消す](http://dotinstall.com/lessons/basic_rails/6530 "#30	メッセージをjQueryで消す")
>
Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - new,create）
>
>記事のタイトル一覧を表示するindexメソッド、その記事を表示するshowメソッドは完成したので次はその記事を表示するページが欲しいですね。ということでnewメソッド（新規作成フォーム）を作ります。また、フォームから送信されたデータを処理して新しい記事を作成するcreateメソッドも作成します。
>
バリデーション（検査）の設定をやってみよう（実践的）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (31〜33)/全46](http://qiita.com/hirokishirai/items/3c0552e258b2f7d5defc "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (31〜33)/全46")
>
[#31	記事を更新してみよう (1)](http://dotinstall.com/lessons/basic_rails/6531 "#31	記事を更新してみよう (1)")
[#32	記事を更新してみよう (2)](http://dotinstall.com/lessons/basic_rails/6532 "#32	記事を更新してみよう (2)")
[#33	記事を更新してみよう (3)](http://dotinstall.com/lessons/basic_rails/6533 "#33	記事を更新してみよう (3)")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - edit, update）
>
>記事のタイトル一覧を表示するindexメソッド、その記事を表示するshowメソッド、記事の新規作成フォームを作成するnewメソッド、記事を作成するcreateメソッドは完成したので次はその記事を編集するページが欲しいですね。ということでeditメソッド（記事編集フォーム）を作ります。また、フォームから送信されたデータを処理して記事を上書きするupdateメソッドも作成します。
1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (34〜36)/全46](http://qiita.com/hirokishirai/items/cf4cc479b09d35501fc3 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (34〜36)/全46")
>
[#34	記事を削除してみよう](http://dotinstall.com/lessons/basic_rails/6534 "#34	記事を削除してみよう")
[#35	削除処理をAjax化しよう (1)](http://dotinstall.com/lessons/basic_rails/6535 "#35	削除処理をAjax化しよう (1)")
[#36	削除処理をAjax化しよう (2)](http://dotinstall.com/lessons/basic_rails/6536 "#36	削除処理をAjax化しよう (2)")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - destroy）
>
>記事のタイトル一覧を表示するindex、その記事を表示するshow、記事の新規作成フォームを作成するnew、記事を作成するcreate、記事を編集するeditは完成したので次はその記事を削除するページが欲しいですね。ということでdestroyを作ります。

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46](http://qiita.com/hirokishirai/items/a25da39da0e6b32246ed "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46")
>
[#37	Commentモデルを作ろう](http://dotinstall.com/lessons/basic_rails/6537 "#37	Commentモデルを作ろう")
[#38	Commentsコントローラーを作ろう](http://dotinstall.com/lessons/basic_rails/6538 "#38	Commentsコントローラーを作ろう")
[#39	コメントを表示させよう](http://dotinstall.com/lessons/basic_rails/6539 "#39	コメントを表示させよう")
[#40	コメントを投稿してみよう (1)](http://dotinstall.com/lessons/basic_rails/6540 "#40	コメントを投稿してみよう (1)")
[#41	コメントを投稿してみよう (2)](http://dotinstall.com/lessons/basic_rails/6541 "#41	コメントを投稿してみよう (2)")
[#42	バリデーションを設定しよう](http://dotinstall.com/lessons/basic_rails/6542 "#42	バリデーションを設定しよう")
[#43	コメントを削除してみよう (1)](http://dotinstall.com/lessons/basic_rails/6543 "#43	コメントを削除してみよう (1)")
[#44	コメントを削除してみよう (2)](http://dotinstall.com/lessons/basic_rails/6544 "#44	コメントを削除してみよう (2)")
[#45	コメント件数を表示してみよう](http://dotinstall.com/lessons/basic_rails/6545 "#45	コメント件数を表示してみよう")
[#46	Railsを日本語化しよう](http://dotinstall.com/lessons/basic_rails/6546 "#46	Railsを日本語化しよう")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* 新しい機能（Comment）を追加させましょう
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。