Rails チュートリアル 1章 勉強メモ1

Rails チュートリアルの勉強メモ

railstutorial.jp

  • Rails 使うことになるので Rails の勉強をしていきます。

(何をメモしていけばいいのかわからない・・・

1章

  • 1.1 前提知識で 基礎知識を学んでみてはいかがでしょうか?と書いてあったので早速脱線

Command Line 基礎編

  • 流石に知ってることしかなかったけどレベル上がるのは面白かった。他もやってみたい。

1章続き

rails _5.1.6_ new hello_app
  • でアプリ作成

  • Gemfile にはアプリに必要な gem を記述する

bundle install
  • で Gemfile に記述された gem をインストールする

  • rails server でサーバーを起動できる

  • これ知ってることをメモする必要あるんだろうか?

rails new 何やってんの?

  • まずは which rails してみる
$HOME/.rbenv/shims/rails 

中身を見てみると・・・

#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEBUG" ] && set -x

program="${0##*/}"
if [ "$program" = "ruby" ]; then
  for arg; do
    case "$arg" in
    -e* | -- ) break ;;
    */* )
      if [ -f "$arg" ]; then
        export RBENV_DIR="${arg%/*}"
        break
      fi
      ;;
    esac
  done
fi

export RBENV_ROOT="$HOME/.rbenv"
exec "/usr/local/Cellar/rbenv/1.1.2/libexec/rbenv" exec "$program" "$@"

なんと シェルスクリプトだった・・・

どうやら shims 以下の他のコマンドも中身は全く同じらしい

diff $HOME/.rbenv/shims/rails $HOME/.rbenv/shims/ruby 

↑ 差分なし

  • 1行目 #!/usr/bin/env bash
    • これは bash コマンドでこのファイルを実行するということを指定している
    • env は環境変数を与えるコマンドらしい
    • 実際に env を実行すると PATH=HOME= が 実行される
  • 2行目 set -e
    • set コマンドはオプションなしではシェル変数を表示する
    • set -e は、コマンドが 0 以外の値で終了したときすぐに終了する
  • 3行目 [ -n "$RBENV_DEBUG" ] && set -x
    • [] は test コマンドと同じらしい
    • test コマンドは 真なら0、偽なら1 を返す
    • -n は 文字列が 0 より大きければ真
    • set -xデバッグ情報を出力する
    • $RBENV_DEBUG に値が入っていると set -x される
    • つまりデバッグ情報が出力されるようになる
    • 実際にRBENV_DEBUGに値を入れて実行してみるとわかりやすい
  • 5行目 program="${0##*/}"
    • $0 には実行したプログラムのパスが入っている
    • つまり今回"${0##*/}" には rails が入る
+ program=rails
  • if [ "$program" = "ruby" ]; then
    • ruby だった場合の処理
      • ruby の場合オプションの処理をしている
        • case文で引数ごとの処理
        • -e, -- のとき break
        • / のとき
          • if [ -f "$arg" ]; then
            • -f はファイルが存在していれば真
            • / は ~/hello.rb のような状態を期待している
            • RBENV_DIR に ディレクトリのパスを入れて break 上の例なら ~
        • esac は case の終了
  • export RBENV_ROOT="$HOME/.rbenv"
    • RBENV_ROOT に 値を突っ込んでる
  • exec "/usr/local/Cellar/rbenv/1.1.2/libexec/rbenv" exec "$program" "$@"

    • rbenv の実行
    • "$program" は rails
    • "$@" は 引数全てが入っている 今回は"5.1.6 new hello_app"
  • 脱線してしまったので一旦終わり

  • rails new はまだ何やってるのかわかんないので次回も追っていきます