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におけるクラス
継承
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 セットアップ
- アプリケーションの生成~herokuのデプロイまで
1章・2章と同じ。 - 困ったこと
2章の時と同じだが、やっぱりherokuコマンドがない。
ググると下とか出てきたけど解決ならず・・・
https://forums.aws.amazon.com/message.jspa?messageID=822444
3.2 静的ページ
ブランチの作成
git checkout -b static-pagescontrollerの作成
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 doSpringとGitの競合を防ぐために.gitignoreファイルにspring/を追加
- 自動テスト開始!!
bundle exec guard
Guardfileの中は監視対象と対するテストを書いてある感じ。
監視対象とテストは正規表現で書いてあったりしてファイル名をそろえとくといい感じだった。
まあ普通そろえるか。 - Guard初期化
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!の作成
- Bundlerの実行・GemFileの修正
- bundle installの実行
サーバー起動
- rails serverでサーバー起動!
適当にやったらページに飛ばなくて焦るわ、「×」を押してconsoleが消えて焦ったりしたが何とか起動!
手順ちゃんと見るのってやっぱり大事だわ。
- rails serverでサーバー起動!
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じゃないってさ。とりあえず従っておく。ブランチの作成(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 感想
ひとまずは順調(?)に終わってよかった。
まあ、これが明日以降どれぐらい続いていくかどうか・・・!
やる前に開発用にメールアドレス作ったけど作っててよかった。
いろいろ登録するところがあってまとめておけるのはよかったな。