さて、久しぶりに更新です。

8月第三子である長男を出産しました( ՞ਊ ՞)うぇーい!

なのでしばらくろくにPCを開きませんでした。
(産後は目を使ってはいけないと言われてます。平気な人もいますが、私は明らかに視力が弱ってました)

更に産んでからというもののボケっとして頭が働きません (Θ_Θ*)
(一説には我々人間は生物として繁殖するために生きてるので、出産の痛みを忘れて次の繁殖に移りやすくするために物覚えが悪くなると言われてます。これも個人差がありますが、この説賛成派です。実際痛みって忘れてしまいますし。)

しかしTwittetやFBを見るだけの生活はつまらない。。
更に考えることをしないと 理性<<感情になり、精神的にも家族コミュニケーション的にもよろしくありません。頭つかわなくてはあああ!!!

そこで新しいことにチャレンジせず、初心に戻りRails Girlsの際作ったアプリと書籍を対応させて基礎部分の知識を肉づけすることにしました。なんとなくをカタチにしようと。
当時は初心者すぎて、旦那に「で、結局何やったの?環境は?」と言う問いに答えられないままだったので・・・

資料: girl
cover_s
初心者向けの書籍探しって難しいですが、「はじめる! Rails3」は丁寧に書かれていると思いました。
初め別のもの(わかりやすいと言われたのですが…)を読んでいたのですが、ページが進むにつれ挫折しかけ、その後この本と出会い、あらこれなんて丁寧~(๑˃̵ᴗ˂̵)وと思い、更にその後、最初の本に戻ると前より読み進められました(それをステップアップというのでは?って話ですが・・・)

まずは
Rails Girls アプリ・チュートリアル
1.アプリケーションを作る
(「はじめる! Rails3」対応箇所 第1~3章)

※インストールに関してはRailsInstallerを使用したので、省略します。
(Windowsユーザーですが、Windowに関してのインストールってあまり詳細に書かれないしね・・・)

$ mkdir projects もろもろを格納するのにふさわしい名前(ここでは「projects」と命名)をつけたディレクトリ作成
$ cd projects 「projects」に移動
$ rails new railsgirls 「railsgirls」という名のRailsアプリケーションの生成
$ cd railsgirls 「railsgirls」に移動
$ ruby bin\rails server サーバを起動(短縮形「rails s」も可)

「rails server」コマンドは短縮形「rails s」も可と書きましたが、恐らくRailsInstallerが用意してくれたターミナルがminttyを利用しているからで、素のWindows環境だと失敗するかもです。

サイトに書いてありますが、アプリケーションを終了するには、 Ctrl-C~♪
その後自分のパソコン上のブラウザで http://localhost:3000 にアクセスして「Welcome aboard」画面(この画面が出ていれば成功)を確認します。

niku
肉付けpoint  使用しているRubyのバージョンを調べる
(対応箇所 2.1 Ruby のインストール)

よくRubyのVersionが~って聞くけどそういえば自分どのVersion使ってるのか知りませんでした
(。・ ω<)ゞてへぺろ♡

$ ruby -v

niku
肉付けpoint  RubyGems の更新
(対応箇所 2.2 RubyGems の更新)

GemsとはRuby 標準のライブラリ管理ツール…と書くと難しいので、Gem パッケージを整理した一覧のようなものです。Rubyをインストールした際に、RubyGems も同時にインストールされます。

$ gem update --system
$ update_rubygems バージョンが 1.2 以上 1.3 未満の場合、このコマンドで更新

ちなみにGem パッケージってとっても便利なもので!!!!!
ある特定のコンセプトに従った機能をまとめてくれたもので、開発にするにあたりGem パッケージを使用するとかなりの手間を省けます。

例えばある機能を作るのにA+B+Cの工程があるとして、Gem パッケージはそれを一つ(ABC)にまとめてくれたものです、
いちいちA・・・B・・・と工程ごとにつまづく自分には時間短縮に素敵すぎるファイルです。
(でもABCとやっていった方が勉強になります。Gem パッケージを使うと何をしたのかわからない・・という問題もあります(初心者には))

niku
肉付けpoint  bundler
(対応箇所 第 15 章 Bundler によるパッケージ管理)

世の中には色んな人が作成した沢山のGem パッケージが出ています。
代表的なものは「bundler」で、RubyGemsに書かれている必要なGem パッケージをインストールしてくれるものです。
「bundler」をインストールした後は、欲しいGem パッケージ名をGemsに追記し、「bundle install」というコマンドを打つと必要なGem パッケージをインストールしてくれます。

ちなみに第15章のRubyGemsとbundlerの違いがよくわからなかった私・・・
ある方に聞いてみました。

gemを薬に例えるとする
こどもに処方されたあれやらこれやらの薬それぞれがgemで
処方される薬全部入りのシロップがbundlerにあたる
いちいちたくさん飲ませなくていいしこどもも甘くておおよろこび あぁよかった~ という関係。

bundlerがあればgemがいらない、のではなく
gemをいっぱい使う処理をまとめてくれるのがbundler

だそうです。わかりやすい!!!!
例え話ってなんていいんでしょ。

Bundler のコマンドいろいろ

$ bundle --version Bundler のバージョン確認
$ gem update bundler Bundler のバージョン更新
$ bundle list 対象の Rails アプリケーションが必要とする Gem ファイルの一覧表示
$ bundle check 必要な Gem ファイルが全てインストールされていることを確認
$ bundle install Gemfile(脚注1) に記述されたすべての Gem ファイルと、それらが依存する全ての Gem パッケージをインストール

一人で開発している間は「$ bundle install」は「$ bundle update」でもいいかもです。
2つの違いは現在の環境に実際にインストールされている Gem パッケージのリストが具体的なバージョン番号とともに記録したGemfile.lockが関係あります。前者はGemfile.lock に記録されている通り Gem パッケージをインストールし(複数人で開発しても同じ環境を再現できる。開発者間で環境に相違がない)、後者はGemfile.lock を無視し、可能な限り新しいバージョンの Gem パッケージにアップデートします。

脚注1
Gemfileとは…(あれ?Gem ファイルの表記が急に英語になった???と思いきや違ってました)
ある Ruby アプリケーションを Bundler で管理するためには、そのルートディレクトリに Gemfileというファイルが必要です。Bundler はこのファイルの記述を読んで、必要な Gem パッケージのリストを割り出します。

niku
肉付けpoint  DBを指定する
(対応箇所 3.3 データベースの選択)

$ rails newでアプリケーションを生成する際に、DBの指定なんかも出来るのですね。

「アプリケーションの生成時に「-d DBMS 名」または「–database=DBMS 名」オプションを使うと、使用する DBMS に沿った config/database.yml の雛形を生成できます。」

指定可能な DBMS は MySQL、Oracle、PostgreSQL、SQLite3、FrontBase、DB/2 で、それぞれ「mysql」、「oracle」、「postgresql」、「sqlite3」、「frontbase」、「ibm_db」を指定します。デフォルトで指定される DBMS は「sqlite3」です。

PostgreSQLを指定する場合はこんな感じ

$ -d DBMS PostgreSQL

逆に使わない場合は-Oオプションだそうです。(Active Record用のファイルを生成しないとのこと)

$ rails new railsgirls -O

今回はCoach側に着目(ノ゚ο゚)ノ 

「Coachより: それぞれのコマンドが何なのか説明してみましょう。何が生成されましたか?そしてサーバーは何をしますか?」

コマンドの意味は上記に赤文字で書きました。
「$ rails new railsgirls」を実行するとこのようなディレクトリが生成されます。

|-- app Rails 開発のメインフィールド
| |-- controllers
| |-- helpers
| |-- mailers
| |-- models
| ‘-- views
| ‘-- layouts
|-- config routes.rb という設定ファイルあり
| |-- environments
| |-- initializers
| ‘-- locales
|-- db DBスキーマの定義や初期データの投入に関係するファイルが格納
|-- doc
|-- lib
| ‘-- tasks
|-- log
|-- public Rails アプリケーションを構成する静的なファイル群が格納
| |-- images
| |-- javascripts
| ‘-- stylesheets
|-- script
|-- test
| |-- fixtures
| |-- functional
| |-- integration
| |-- performance
| ‘-- unit
|-- tmp
| |-- cache
| |-- pids
| |-- sessions
| ‘-- sockets
‘-- vendor
‘-- plugins

えーと…「サーバーは何をしますか?」
……BrowserのリクエストにHTML等を返します…???でいいのでしょうか…(^_^;)

技術系の内容をブログに書くのは初めてで、どう書けば良いかわからず予想の倍倍以上時間がかかりました。
本当に基礎の基礎なのですが、当日の記憶が蘇るとともに、今回はまだ出てきませんが、MVCやscaffoldの話、Git使ってたなんてすっぽりと記憶から抜け落ちていました。解説も聞いたし、質問もしていたつもりでも、頭に入りきらずコマンドをただ打っていたのだなと…

今見返すと本当~にシンプルなアプリで、基本が詰まっていたのだなと思えます。
その後の勉強会More!には割と参加してきましたが、いかんせん日々の生活を優先するあまり家での開発の時間が少なく、進んでない気がしていましたが、多少の成長を実感しました。

hbtrhnhnjytntgenbntr

もちろん次回「2.Idea の scaffold をする」続きます。他にGitやGithubも勉強したので慣れてサクサクと載っけたいですφ(・ェ・o)