MacでRails(3.2系)アプリケーションを開発する前にやっておくべきこと [rails]
ちょっと間が開いてしまいましたが、前回(MacにRails3.2.13を入れてみた。)の続きです。
Railsの環境が出来ると、とりあえず何か作ってみよう!となりますが、開発をスムーズに行うためにも先に以下の事をやっておくと後で昔の自分GJ!となります。
1. DB(MySQL)のGUIクライアントツールの導入
2. ソースコードのGit管理
3. debug環境の設定
1.はともかく、2.、3.については、技術系入門書でも触れられていない事が多く、割と知らない人が多い気がします。
ただ仕事でやる人に取っては必須となっていて、個人で開発・勉強する上でも役立つので面倒くさがらずやっておいたほうがいいです。
1. DB(MySQL)のGUIクライアントツールの導入
Railsに限らず何らかのアプリを開発する上でDBアクセスは避けては通れないので、DBの中身を簡単にチェック出来るGUIツールを用意したほうがいいです。
MySQLのGUIクライアントツールはブラウザベースのMySQL Adminが有名で、実際に自分も仕事ではこっちを使っていますが、"Sequel Pro"というオープンソースのMySQL GUIクライアントツールの評判がいいので今回はこっちを使ってみます。
Sequel Pro
"Download"ボタンをクリックしてアプリケーションをダウンロードしてインストールします。
# 2013/04/13時点の最新 1.0.1
インストールしたアプリケーションを起動し、MySQLの接続情報を入力して接続できる事を確認します。
なお、テーブルはまだ作られていないので、細かい使い方や確認などはいずれまた。
2. ソースコードのGit管理
Gitとはバージョン管理ソフトの1つです。
Macにはdefaultで入っているので特に設定することなく利用することが出来ます。
オレオレ開発でもバージョン管理してこまめにコミットしておけばいつか助かったと思える日が来ます。
なので未来の自分のために入れておくといいと思います。
Gitレポジトリを作る前に以下の設定を入れておきます。
この設定は誰がコミットしたかを表す設定なのでソロ開発では必要ないといえば必要ないのですが、今後githubや最近流行りのソーシャルコーディングなどをやった際設定漏れしてると全力で履歴に残り若干恥ずかしいので、後々忘れる前に設定しておくといいです。
あとはカラーリングしておくと見やすくなって便利です。
初期設定が終わったらGitレポジトリを作成します。
Git管理したいアプリケーションをカレントにしinitコマンドを叩きます。
今回はRailsテスト用に作った"my_app"をレポジトリ管理します。
レポジトリ作成はこれで完了。
"my_app"フォルダにはnewしたrailsアプリケーションがあるのでとりあえず初期コミットします。
ただし、ログとかgit管理したくないファイルもあるので、除外するファイルを設定します。
.gitignoreには最初からいくつか設定されていますが、とりあえず自分が追加設定したのは上記2点。
/log配下には(たぶん)ログファイルしか置かないので全部除外にして、/vendorもGemfile管理で大丈夫なので対象外としました。
あとは必要に応じて追加したりします。
ここまで終わったら初期コミットします。
まずは全部なので、"add ." => "commit"を実行します。
Gitに慣れてない人はとりあえず add / commit / status / diff の4つだけ覚えておけば当面は大丈夫、なハズ。
1歩進んだ事をしたくなったらそこはもうGoogle先生に・・・
余談だけど個人的に初心者にオススメGit本。
Git本はのべ3冊読んだけど、これが一番わかりやすい。
自分は仕事でGitを使い始めたのも最近で、それまでずっとSVNを使っていました。
そのせいなのか、最初はGitの扱いにだいぶ苦戦して前のバージョンに戻すのも一苦労してました。
Git本で有名なの書籍として秀和システムやオーム社の書籍がありますが、Gitをあまり理解していない人が入門書として読むと心が折れる気がする。
上記の本はあまりに逆に入門的な空気が出すぎていて買う時に別の勇気が必要となりますが、この本に書かれている内容をひと通りこなすと最低限Gitを使えるようになるので、本当の入門書を求めている場合はオススメです。
3. debug環境の設定
自宅で趣味や勉強がてらに触る人にはあまり必要ないかと思われがちですが、いざハマった時にちゃんとしたdebugを行えるかどうかで効率は大きく変わるので導入しておいて損はないと思います。
debug環境の設定についてですが、具体的には以下の2つ(関連含めると3つ)のGemをインストールします。
・debugger
・better_errors(+ binding_of_caller)
まずは、debuggerから。
こちらはdefaultで作られるGemfileの中に記述が既にあり、コメントで寝かされている状態なのでそれを取っ払ってbundle installします。
インストールはこれで完了。
以下、簡単な使い方について。
とりあえずテスト用に適当なコントローラーを作ります。
ViewとActionも実装し、Actionのdebugしたい場所にブレイクポイントを設置します。
ブレイクポイントを仕込んだらWEBrickを"--debugger"オプションをつけて起動します。
ブラウザでアクセスしてみる。
http://0.0.0.0:3000/top/index
そうすると画面の読み込み途中で止まってしまいます。
コンソールをチェックすると以下の様な表示が出ています。
これは"debugger"文(ブレイクポイント)を差し込んだ行で処理が停止している状態になっています。
"p"コマンドでこの時点での変数の値を確認できるので"@hoge"に設定されている値を確認します。
ループ前にブレイクポイントを入れているので、初期値の"1"が表示されます。
"list"コマンドを叩くことで周辺のソースコードを確認することが出来ます。
次に処理を1行進めてみます。処理を進めるのは"next"コマンドです。
1行進めることで次の処理である"@hoge += 1"が実行され、@hogeには"2"が設定されます。
なお"next"コマンドは、"n"でも実行出来ますので、それを打ってもう1行進めます。
こうやって"next"コマンドを叩くことで1行ずつ処理が実施されるので、処理がどのように行われているかを追うことが出来ます。
確認が終わったら"continue"コマンドを叩けば残りの処理が実行され、次のブレイクポイントまで処理が進みます。他にブレイクポイントが無ければそのまま処理が完了します。
一見面倒に思えますが、このようにどこでどのような処理/エラーが起きているかが明確にわかるので、当たりをつけて何度もdebug用コードを差し込むより、早く原因を特定する事が出来ます。
これはアプリケーションがより巨大に、複雑になればなるほど効果を発揮します。
なお、今回利用したコマンド以外のコマンドについては"h(help)"コマンドで確認できます(英語)。
短縮コマンドもこれで確認することが出来ます。
debuggerの設定が終わったら次は"better_errors"Gemを入れます。
こちらはRailsのエラー画面を強化するGemで、Railsに標準で入れて欲しいとの声もあるほど有名なGemです。
GitHub: better_errors
GitHubのREADMEにも書いてあるように、"binding_of_caller"プラグインもセットで入れます。
これによりエラー画面上でirbが使えるようになるのでよりdebug作業が楽になります。
GemをインストールするためにGemfileに追記し、bundle installを実施します。
インストールが終わったら、試しにエラーを発生させてみます。
エラーページを確認すると、標準のエラー画面に比べ情報が整理され見やすくなっています。
[Before]
[After]
画面右上のソースコード表示部にはirbが起動しているので、そこからエラー発生時の変数の値などを確認することができます。
debuggerとbetter_errorsによりRailsアプリのdebugはだいぶ楽になると思います。
Railsの環境が出来ると、とりあえず何か作ってみよう!となりますが、開発をスムーズに行うためにも先に以下の事をやっておくと後で昔の自分GJ!となります。
1. DB(MySQL)のGUIクライアントツールの導入
2. ソースコードのGit管理
3. debug環境の設定
1.はともかく、2.、3.については、技術系入門書でも触れられていない事が多く、割と知らない人が多い気がします。
ただ仕事でやる人に取っては必須となっていて、個人で開発・勉強する上でも役立つので面倒くさがらずやっておいたほうがいいです。
1. DB(MySQL)のGUIクライアントツールの導入
Railsに限らず何らかのアプリを開発する上でDBアクセスは避けては通れないので、DBの中身を簡単にチェック出来るGUIツールを用意したほうがいいです。
MySQLのGUIクライアントツールはブラウザベースのMySQL Adminが有名で、実際に自分も仕事ではこっちを使っていますが、"Sequel Pro"というオープンソースのMySQL GUIクライアントツールの評判がいいので今回はこっちを使ってみます。
Sequel Pro
"Download"ボタンをクリックしてアプリケーションをダウンロードしてインストールします。
# 2013/04/13時点の最新 1.0.1
インストールしたアプリケーションを起動し、MySQLの接続情報を入力して接続できる事を確認します。
なお、テーブルはまだ作られていないので、細かい使い方や確認などはいずれまた。
2. ソースコードのGit管理
Gitとはバージョン管理ソフトの1つです。
Macにはdefaultで入っているので特に設定することなく利用することが出来ます。
オレオレ開発でもバージョン管理してこまめにコミットしておけばいつか助かったと思える日が来ます。
なので未来の自分のために入れておくといいと思います。
Gitレポジトリを作る前に以下の設定を入れておきます。
% git config --global user.name "[自分のUserName]" % git config --global user.email "[自分のMailAddress]"
この設定は誰がコミットしたかを表す設定なのでソロ開発では必要ないといえば必要ないのですが、今後githubや最近流行りのソーシャルコーディングなどをやった際設定漏れしてると全力で履歴に残り若干恥ずかしいので、後々忘れる前に設定しておくといいです。
あとはカラーリングしておくと見やすくなって便利です。
% git config --global color.ui auto
初期設定が終わったらGitレポジトリを作成します。
Git管理したいアプリケーションをカレントにしinitコマンドを叩きます。
今回はRailsテスト用に作った"my_app"をレポジトリ管理します。
% cd ~/developments/rails/my_app % git init Initialized empty Git repository in /Users/*******/developments/rails/my_app/.git/
レポジトリ作成はこれで完了。
"my_app"フォルダにはnewしたrailsアプリケーションがあるのでとりあえず初期コミットします。
ただし、ログとかgit管理したくないファイルもあるので、除外するファイルを設定します。
% vim .gitignore ====================================== ## 変更 # Ignore all logfiles and tempfiles. #/log/*.log /log ##追加 /vendor ======================================
.gitignoreには最初からいくつか設定されていますが、とりあえず自分が追加設定したのは上記2点。
/log配下には(たぶん)ログファイルしか置かないので全部除外にして、/vendorもGemfile管理で大丈夫なので対象外としました。
あとは必要に応じて追加したりします。
ここまで終わったら初期コミットします。
まずは全部なので、"add ." => "commit"を実行します。
% git add . % git commit -m "初期コミット" 37 files changed, 1227 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock (中略) create mode 100644 test/test_helper.rb create mode 100644 test/unit/.gitkeep
Gitに慣れてない人はとりあえず add / commit / status / diff の4つだけ覚えておけば当面は大丈夫、なハズ。
1歩進んだ事をしたくなったらそこはもうGoogle先生に・・・
余談だけど個人的に初心者にオススメGit本。
Git本はのべ3冊読んだけど、これが一番わかりやすい。
自分は仕事でGitを使い始めたのも最近で、それまでずっとSVNを使っていました。
そのせいなのか、最初はGitの扱いにだいぶ苦戦して前のバージョンに戻すのも一苦労してました。
Git本で有名なの書籍として秀和システムやオーム社の書籍がありますが、Gitをあまり理解していない人が入門書として読むと心が折れる気がする。
上記の本はあまりに逆に入門的な空気が出すぎていて買う時に別の勇気が必要となりますが、この本に書かれている内容をひと通りこなすと最低限Gitを使えるようになるので、本当の入門書を求めている場合はオススメです。
3. debug環境の設定
自宅で趣味や勉強がてらに触る人にはあまり必要ないかと思われがちですが、いざハマった時にちゃんとしたdebugを行えるかどうかで効率は大きく変わるので導入しておいて損はないと思います。
debug環境の設定についてですが、具体的には以下の2つ(関連含めると3つ)のGemをインストールします。
・debugger
・better_errors(+ binding_of_caller)
まずは、debuggerから。
こちらはdefaultで作られるGemfileの中に記述が既にあり、コメントで寝かされている状態なのでそれを取っ払ってbundle installします。
% vim Gemfile ====================================== # To use debugger ## コメントを外し有効にする gem 'debugger' ====================================== % bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/........... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies... (中略) Installing columnize (0.3.6) Installing debugger-linecache (1.2.0) Installing debugger-ruby_core_source (1.2.0) Installing debugger (1.5.0)
インストールはこれで完了。
以下、簡単な使い方について。
とりあえずテスト用に適当なコントローラーを作ります。
% bundle exec rails generate controller Hoge index create app/controllers/hoge_controller.rb route get "hoge/index" (以下略)
ViewとActionも実装し、Actionのdebugしたい場所にブレイクポイントを設置します。
% vim app/controllers/hoge_controller.rb ====================================== # coding: utf-8 class HogeController < ApplicationController def index @hoge1 = 1 debugger # ブレイクポイント @hoge += 1 @hoge += 2 @hoge += 3 end end ====================================== % vim app/controllers/hoge/index.html.erb ======================================テスト:<%= @hoge %>
======================================
ブレイクポイントを仕込んだらWEBrickを"--debugger"オプションをつけて起動します。
% bundle exec rails server --debugger => Booting WEBrick => Rails 3.2.13 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server => Debugger enabled [2013-04-07 21:17:24] INFO WEBrick 1.3.1 [2013-04-07 21:17:24] INFO ruby 1.9.3 (2013-01-15) [x86_64-darwin12.2.1] [2013-04-07 21:17:24] INFO WEBrick::HTTPServer#start: pid=21002 port=3000
ブラウザでアクセスしてみる。
http://0.0.0.0:3000/top/index
そうすると画面の読み込み途中で止まってしまいます。
コンソールをチェックすると以下の様な表示が出ています。
Users/*******/developments/rails/my_app/app/controllers/hoge_controller.rb:7 @hoge += 1 (rdb:2)
これは"debugger"文(ブレイクポイント)を差し込んだ行で処理が停止している状態になっています。
"p"コマンドでこの時点での変数の値を確認できるので"@hoge"に設定されている値を確認します。
(rdb:2) p @hoge 1
ループ前にブレイクポイントを入れているので、初期値の"1"が表示されます。
"list"コマンドを叩くことで周辺のソースコードを確認することが出来ます。
(rdb:2) list [2, 11] in /Users/*******/developments/rails/my_app/app/controllers/hoge_controller.rb 2 3 class TopController < ApplicationController 4 def index 5 @hoge = 1 6 debugger => 7 @hoge += 1 8 @hoge += 2 9 @hoge += 3 10 end 11 end
次に処理を1行進めてみます。処理を進めるのは"next"コマンドです。
(rdb:2) next Users/*******/developments/rails/my_app/app/controllers/hoge_controller.rb:8 @hoge += 2 (rdb:2) p @hoge 2
1行進めることで次の処理である"@hoge += 1"が実行され、@hogeには"2"が設定されます。
なお"next"コマンドは、"n"でも実行出来ますので、それを打ってもう1行進めます。
(rdb:2) n Users/*******/developments/rails/my_app/app/controllers/hoge_controller.rb:9 @hoge += 3 (rdb:2) p @hoge 4
こうやって"next"コマンドを叩くことで1行ずつ処理が実施されるので、処理がどのように行われているかを追うことが出来ます。
確認が終わったら"continue"コマンドを叩けば残りの処理が実行され、次のブレイクポイントまで処理が進みます。他にブレイクポイントが無ければそのまま処理が完了します。
(rdb:2) continue Started GET "/hoge/index" for 127.0.0.1 at 2013-04-07 21:31:51 +0900 Processing by HogeController#index as HTML Rendered hoge/index.html.erb within layouts/application (19.9ms) Completed 200 OK in 457560ms (Views: 57.6ms | ActiveRecord: 0.0ms)
一見面倒に思えますが、このようにどこでどのような処理/エラーが起きているかが明確にわかるので、当たりをつけて何度もdebug用コードを差し込むより、早く原因を特定する事が出来ます。
これはアプリケーションがより巨大に、複雑になればなるほど効果を発揮します。
なお、今回利用したコマンド以外のコマンドについては"h(help)"コマンドで確認できます(英語)。
短縮コマンドもこれで確認することが出来ます。
(rdb:2) help ruby-debug help v1.5.0 Type 'help' for help on a specific command Available commands: backtrace delete enable help list ps save start undisplay break disable eval info method putl set step up catch display exit irb next quit show thread var condition down finish jump p reload skip tmate where continue edit frame kill pp restart source trace (rdb:3) help next n[ext][+-]?[ nnn] step over once or nnn times, '+' forces to move to another line. '-' is the opposite of '+' and disables the force_stepping setting.
debuggerの設定が終わったら次は"better_errors"Gemを入れます。
こちらはRailsのエラー画面を強化するGemで、Railsに標準で入れて欲しいとの声もあるほど有名なGemです。
GitHub: better_errors
GitHubのREADMEにも書いてあるように、"binding_of_caller"プラグインもセットで入れます。
これによりエラー画面上でirbが使えるようになるのでよりdebug作業が楽になります。
GemをインストールするためにGemfileに追記し、bundle installを実施します。
% vim Gemfile ====================================== # better_errors gem 'better_errors' gem 'binding_of_caller' ====================================== % bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/........... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies… (中略) Installing coderay (1.0.9) Installing better_errors (0.8.0) Installing debug_inspector (0.0.2) Installing binding_of_caller (0.7.1)
インストールが終わったら、試しにエラーを発生させてみます。
% vim app/controllers/hoge_controller.rb ====================================== # coding: utf-8 class HogeController < ApplicationController def index @hoge1 = 1 @hoge += 1 # 人為的にエラーを発生させる raise @hoge += 2 @hoge += 3 end end ======================================
エラーページを確認すると、標準のエラー画面に比べ情報が整理され見やすくなっています。
[Before]
[After]
画面右上のソースコード表示部にはirbが起動しているので、そこからエラー発生時の変数の値などを確認することができます。
debuggerとbetter_errorsによりRailsアプリのdebugはだいぶ楽になると思います。
コメント 0