Ruby on Rails チュートリアル 第4章 まとめ

目次

  • 4.1 動機
  • 4.2 文字列とメソッド
  • 4.3 他のデータ構造
  • 4.4 Rubyにおけるクラス
  • 4.5 最後に

4.1 動機

  • Rubyの基礎を勉強
  • カスタムヘルパーの作成
    ページタイトルの編集
    ページ内にのprovideがなくても表示できるように修正
    テストを修正

4.2 文字列とメソッド

rails consolで勉強

  • 事前準備
    irbnの設定変更(~/.irbrcを作成)

  • コメント
    #始まりはコメント(この行はコメントになる)

  • 文字列
    「"」でくくる 例:"rails"
    変数に代入 例:r = "rails"
    出力 print puts
    式展開 「"#{変数}"」例:"#{r}" -> "rails"
    「'」でくくると式展開をしない。例:'#{r}' -> '#{r}'

  • オブジェクト
    .length
    .empty?
    if bool ~~ elsif ~~ end
    !(bool && bool || bool)
    .to_s
    後続if 例:puts "if" if true

  • メソッドの定義
    def method_name(ste = '')
    ~~~~
    end
    メソッドのreturnがない場合「最後の評価の式が返る」

4.3 他のデータ構造

  • 配列と範囲演算子
    • 配列
      String.split(' ') ' 'で分割して配列に
      Array[0] Array[1] ・・・Array[-2] Array[-1]
      Array.first Array.second ・・・ Array.last
      Array.length
      Array.include?(42)
      Array.sort <- Arrayのソート結果
      Array.sort! <- Array自体が変わる
      Array.push('a')
      Array << 'a'
      Array << 'a' << 'b'
      Array.join ,Array.join(',')

    • 範囲
      0..9
      ('a'..'z').to_a <-配列に
      (0..9).to_a[5..-2]
      %w[a s d f] <-スペース区切りで配列に

    • ブロック
      Renge.each{|i| ~~ }
       Array.each do |num|
        num
       end
      number.times{ }
      %w[A B C].map(&:downcase)

    • ハッシュとシンボル
      {"name"=>"tanaka" ,"MSN" => "08044444444"}
      {:name=>"tanaka" ,:MSN => "08044444444"}
      {name:"tanaka" ,MSN:"08044444444"} <-上と同じ

    • inspectメソッド

4.4 Rubyにおけるクラス

  • コンストラク
    "" <-これもコンストトラク
    String.new("") <-上に同じ

  • 継承
     class Word < String
      def palindrome?
       self == reverse  #<-self == self.reverse
      end
     end

  • クラス
     class User
      attr_accessor :name, :email  <-ゲッターセッターができる   def initialize(attributes = {})
       @name = attributes[:name]
       @email = attributes[:email]
      end
      def formatted_email
       "#{@name} <#{@email}>"
      end
     end

4.5 最後に

書いてある通りに。

Ruby on Rails チュートリアル 第3章 まとめ

目次

  • 3.1 セットアップ
  • 3.2 静的ページ
  • 3.3 テストから始める
  • 3.4 少しだけ動的なページ
  • 3.5 最後に
  • 3.6 高度なセットアップ
  • 3.X 感想とか

3.1 セットアップ

3.2 静的ページ

  • ブランチの作成
    git checkout -b static-pages

  • controllerの作成
    rails generate controller StaticPages home help
      controller名はキャメルケース!

  • 作成されたものの確認

3.3 テストから始める

  • 自動生成されたテストの実行!(green)
    rails test / rails t
    (テストファイルの static_pages_home_url とルーターの'static_pages/home'が紐づいている(?)のが気持ち悪い)

  • 自動生成されたテストの追加(aboutページの追加)(red)
    当然失敗
    →ルートを追加
    →でも失敗
    →controllerにアクションを追加
    →また失敗
    →viewを追加
    →成功!!

3.4 少しだけ動的なページ

  • 勉強用にapplication.html.erbを移動
  • タイトルのテスト追加(red)
    各ページに普通のHTML記載
  • テストのリファクタリング(red)
    共通部分をsetupメソッドに統一
      DRYの原則!
  • 各ページの統一
    共通部分をまとめるための下準備
      <% provide(:title, "Home") %>
      <%= yield(:title) %>
     テストで確認

  • application.html.erbをもとの位置に戻す!
    レイアウトファイル(application.html.erb)の編集
    各ページの編集 DRYに!
      テストで確認

  • ルートページの変更
    ルートページのテスト追加!

3.5 最後に

  • gitにコミットとか

3.6 高度なセットアップ

  • テスト結果の見栄えをよく
    test_helper.rbに以下追加
      require "minitest/reporters"
      Minitest::Reporters.use!
  • 自動テスト
    Guardを使った
    • Guard初期化
        bundle exec guard init
    • tmuxのインストール(Guardの通知を有効にするため)
      実はテスト実行の時点でエラーが発生していて、ググったらインストールが必要とのことでもうやってた。
        sudo yum install -y tmux
    • Guardfileのカスタマイズ
        guard :minitest, spring: "bin/rails test", all_on_start: false do

    • SpringとGitの競合を防ぐために.gitignoreファイルにspring/を追加

    • 自動テスト開始!!
        bundle exec guard

    Guardfileの中は監視対象と対するテストを書いてある感じ。
    監視対象とテストは正規表現で書いてあったりしてファイル名をそろえとくといい感じだった。
    まあ普通そろえるか。

3.X 感想とか

テストいいね!安心感が違うな。 どうなっていて欲しいかを一回書けば、覚えておかなくていいのはすごい楽。

Ruby on Rails チュートリアル 第2章 まとめ

  • 2.1 アプリケーションの計画
  • 2.2 Usersリソース
  • 2.3 Micropostsリソース
  • 2.4 最後に

2.1 アプリケーションの計画

  • やったこと
    ・環境設定
      $ cd ~/environment
      $ rails 5.1.6 new toy_app
      $ cd toy_app/
    Gemfileの編集
    Gemのインストール
      $ bundle install --without production
    Gitの設定
      $ (git init) <- AWS Cloud9 でやっているがアプリケーション作成時にできていた
      $ git add -A
      $ git commit -m "Initialize repository"
    (順番違うけど・・・)
    Hello Worldの作成 (controller, routes.rbの編集)
    Bitbucketでリポジトリの作成
      リポジトリにプッシュ
    Herokuへプッシュ

  • お勉強
    マイクロブログのユーザーモデル・マイクロポストのデータモデル

  • その他やったこと
    rails severの起動
  • 困ったこと
    rails severが起動しない!
      コマンド実行するディレクトリが違うだけだった。。。
    Hello Worldがエラーになる!
      routes.rbの書き方が間違ってた。
      記憶を頼りに書いたが、記憶は当てにならん。
    それでもHello Worldがエラーになる!
      application_controller.rbの追記した行の
      "html:"のところが"html :"になってた。
      スペースダメか。htmlっていうメソッドないよ。と言われてた記憶。
    herokuコマンドがない!
      heroku --versionやってもコマンドないよと言われる
      結局、1章のインストールのコマンドを実行した。
      インストールしたんだからいいと思うんだが・・・?

2.2 Usersリソース

  • やったこと
    Usersリソースの作成
      $ rails generate scaffold User name:string email:string
    データベースのマイグレート
      $ rails db:migrate
    (サーバーの起動は省略)
    ユーザーページをいろいろさわる
    routes.rbの編集
      hello worldからuserのindexへ変更
  • お勉強
    MVCの挙動について概要とファイルをおっかけていく
    routes.rbファイル
    users_controller.rbファイル
    RailsにおけるREST
    user.rbファイル
    index.html.erbファイル

2.3 Micropostsリソース

  • やったこと
    Micropostリソースの作成
      $ rails generate scaffold Micropost content:text user_id:integer
    デーベースのマイグレーション
      $ rails db:migrate
    Micropostsをいろいろさわる
    contentに文字数制限の追加
      micropost.rbにvalidatesを追加
      エラーの確認
    ユーザーとマイクロポストの紐付け
      user.rb へ has_many追加
      micropost.rb へ belongs_to追加
    rails consoleによる関連付けの確認
      SQLが勝手に発行されてる!
  • お勉強
    継承ついて

  • 困ったこと
    演習がいろいろ困った。
    ユーザーの最初のマイクロポストを表示できない!
      ユーザーからmicropostを取得できなかった。
      いろいろいじった結果、以下の理解不足が原因だったのかな・・・
      (何回もそんなメソッドないよ的な感じで怒られてた。)
      rubyの仕様がよくわからないのでイメージだが・・・
      1.@user.micropostsでとってこれるのはレコードのリスト
      2.リストなので.contentをしても値が取得できるわけがない。
      3.リストに対し、.firstをすればリストの1レコード目が取得できる。
      4.micropostsのレコードに対しては.contentで値がとれる。
    Userモデルへのバリデーションチェックができない!
      そんなメソッドないよと怒られた気がする。
      できなかったのはイメージで書いてたから。
      nameとemailに対してバリデーションするところをなぜかuserとidでやってた。
      恥ずかしい・・・

  • その他やったこと
    nilチェックの追加
      ユーザーの最初のマイクロポストの表示のやつにチェックを追加してユーザーと六できるようにした。
      悩んだのはどこに対してチェックをするか。
      @user.microposts.first.content
      でcontentあが取得できるが、userはnilでないとしてどこがnilになるんだ?というとこ。
      試してやった結果、.firstの結果がnilになっていた。
      上で困ったことと合わして考えるとリストはあるけど、中身がないって感じなのかな。

2.4 最後に

振り返りとまとめ
お疲れ様でした。

2.X 感想

一日経つと忘れる部分が多い!

DBがアプリの一部な感じが気持ちいいような不気味なような気がしてしまう。
自分でSQL書きたい半面、ネ申なSQLが作れなくなるからいいのかな。
何百行あるようなSQLとか見なくて済むのは楽でいいな。

バリデーションチェックをモデルに書けばいいのはすごい嬉しい。
DBには変なデータは入らないようにすべきだよね。
DBのルールとか積極的に使いたいなと思う。

Ruby on Rails チュートリアル 第1章 まとめ

第1章でやったことや感想をまとめておきます。
(明日には忘れてそう・・・)

目次

  • 1.1 はじめに
  • 1.2 さっそく動かす
  • 1.3 最初のアプリケーション
  • 1.4 Gitによるバージョン管理
  • 1.5 デプロイする
  • 1.6 最後に
  • 1.X 感想

1.1 はじめに

"ググりましょう"の動画(?)がかわいい.

1.2 さっそく動かす

  • 開発環境の設定
    AWS Cloud9 を使うことに
     ・AWSのアカウント作成
     ・AWS Cloud9 の開発環構築
    を行った。正直環境の構築が楽で助かった。
  • Railsのインストール
    よくわからないままコマンド入力→実行

1.3 最初のアプリケーション

  • hello, world!の作成
    • environment ディレクトリの作成
    • rails new によるアプリケーションの作成
      いろんなファイルができる
  • Bundlerの実行・GemFileの修正
    • bundle installの実行
  • サーバー起動

    • rails serverでサーバー起動!
      適当にやったらページに飛ばなくて焦るわ、「×」を押してconsoleが消えて焦ったりしたが何とか起動!
      手順ちゃんと見るのってやっぱり大事だわ。
  • controllerの修正・routes.rbの修正
    "hello, world!"のコーディング!
    ルートのコントローラ・アクションを設定
    "hello, world!"がちゃんと出た!

1.4 Gitによるバージョン管理

  • Gitのインストール
    コマンド実行した
  • セットアップ等使ったコマンドたち

    • セットアップ
      git init
    • ファイルのすべて追加
      git add -A
    • 状態確認
      git status
    • コミット
      git commit -m "message"
    • ログ確認
      git log
    • 変更の取り消し(強制)
      git checkout -f
  • Bitbucketの登録
    GitHabじゃないってさ。とりあえず従っておく。

    • Bitbucketのアカウント作成
    • 公開キーの作成
    • Bitbucketへ公開キーを登録
    • Bitbucketでリポジトリの作成
    • リポジトリへプッシュ!
  • ブランチの作成(READMEの修正) ブランチこんなに簡単にできるのか・・・しょうげきだわ。

  • 使ったコマンドたち

    • ブランチの作成 git checkout -b ブランチ名
    • ブランチの確認 git branch
    • 状態確認
      git status (modifiedがいる)
    • 変更をすべてコミット
      git commit -a -m "message"
  • マージ(READMEの修正)

  • 使ったコマンドたち
    • masterへ移動(?) git checkout master
    • マージ git merge ブランチ名
    • Bitbucketへプッシュ git push

1.5 デプロイする

Herokuってのを使う

  • Herokuのセットアップ

    • 本番用にGemFileの修正
    • 本番用以外のgemのインストール
      bundle install --without production
    • herokuのユーザー登録
    • herokuのクライアントインストール
      なんかコマンドを実行
    • herokuのログイン・キー追加
      heroku login
      heroku keys:add ログインがなかなか終わらなかった・・・?
      ・↑URLに飛んでの認証が必要でした。
    • herokuにアプリケーションを作成 heroku create
  • Herokuへのデプロイ
    以下のコマンドで実行するだけ!
    git push heroku master
    "heroku create"でできたURLに飛ぶと見れる!!!
    開発に関係ないスマホでも見れる!!!!!!

  • その他 Herokuコマンド

    • リネーム
      heroku rename rails-tutorial-hello

1.6 最後に

お疲れさまでした!

1.X 感想

ひとまずは順調(?)に終わってよかった。
まあ、これが明日以降どれぐらい続いていくかどうか・・・!
やる前に開発用にメールアドレス作ったけど作っててよかった。
いろいろ登録するところがあってまとめておけるのはよかったな。

はてなブログ開設にあたって

目的

誰も見ないとは思うが日々学んだことを書いていきたい。
とりあえずはRails チュートリアルかな。
目的としては自分の中の整理をできるように何かにまとめたいと思ったところです。
あと何かに書くことでネタ作りに勉強するかもしれないし。
まあ、特に気にせず書いていきます。

(正直SNSやブログを一切やってこなかった人間なので、何を書こうか戸惑ってる。。。)