rails tutorial2章の最後
herokuへのデプロイの所でローカルでは動いていたが、heroku上でアプリを開くことができなかった

ActionView::Template::Error (ERROR:  invalid value for parameter "client_encoding": "utf8mb4"

heroku logsでこのようなエラーが出ていた
【heroku】デプロイの方法、appの削除
この記事の通りconfig/datebase.ymlconfig/environments/production.rbを編集し、heroku run rails db:migrateと実行したら無事起動できた

iterm2 zshrc

iterm2にカラースキームを入れても色が変わらず色々調べた
参考にした記事
記事1
記事2
記事3
記事4
最終的にはgithubのコードをコピーしてプロンプトの表示の部分だけを自分好みに書き換えただけ
コマンドを入力した時に全体が左側にズレる現象が起こったが無事解決した

zsh起動時に毎回警告が出ていたので出ないようにした [zsh]zsh compinit: insecure directoriesの警告が出ないようにする
こちらを参考にしました
あと.zshrcを編集した時にrbenvのパスの部分を消してしまっていた

rubyのバージョン

rails tutorial の為にvscodeでのrails環境を作成した
作成時はrails sでサーバーが起動できることをかくにんしたが、改めて起動したところ

hello_app % rails s
Your Ruby version is 2.6.3, but your Gemfile specified 2.7.1

起動に失敗する

% rbenv version
2.7.1 (set by /Users/owner/.rbenv/version)
% ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

rbenv versionruby -vでversionが違っていた
検索してbashの記事ばかり見ていたが、catalinaのデフォルトシェルはzshだった
rbenvでrubyを使う【zsh】
こちらの記事を参考にさせていただきました
これでruby -vが変わりrails sで起動できるようになった

rails tutorial vscode

vscoderails tutorialをやる
今後も使うことがあるかもしれないので残しておく

VS codeの初期設定とRuby on Railsの環境設定 環境構築
こちらの記事を参考にさせていただきました

railsプロジェクトの作成

$ rails new app --database=mysql
$ cd app
$ bundle install

bundle installを実行したところ

An error occurred while installing mysql2 (0.5.3), and Bundler cannot
continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'`
succeeds before bundling.

In Gemfile:
  mysql2

こんなエラーが出た、とりあえずエラーログに記載されているコマンドを実行して見たがだめ
原因までは理解しなかったが、とりあえず解決することはできた

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
$ bundle install

このコマンドでエラーが解消される、その後

$ rails db:create
$ rails s

rails sを実行するとwebpackerがないというようなエラーが出る ログ上に記述されているrails webpacker:installを実行すると無事に成功しもう一度rails sで「You're on Rails」の画面を開くことができた

rails tutorial 7章~

8/13 7.3.4失敗時のテスト~ 8/16 7章終了~8.2.5

7章から難易度が上がっていくのがわかります
テスト関係は全然理解できません

assert_difference

assert_differenceメソッドの第1引数に渡したメソッドの値が、ブロック内で変更されることを検証する
第2引数は変更される期待値、省略時は+1がデフォルト

assert_no_differenceメソッドもある
こちらはブロックの処理前と後で値が同じであることを検証する

3日もかかってしまった

rails tutorial 6章~

8/12~ 6章

validatesメソッド

想定外のデータを弾くための機能
検証ルールを書いておく

validate :カラム名,検証ルール

空データの登録を防ぐ presence
文字数の制限 length
データの重複を防ぐ uniqueness
特定の値が存在するか確認 inclusion

assertとassert_not

assert @userだと@userがtrueなら成功、falseなら失敗
assert_not @userだと@userがtrueなら失敗、falseなら成功
valid?メソッドはバリデーションを実行し有効な値か確認

つまりテストで無効化したい値を代入して、valid?を実行するとfalseが返るのでassert_not falseとなるので成功する

update_attribute

update_attributeを使うとパスワードなしでデータを更新できる
update_attributeの呼び出し方
.update_attribute(name: "name")では失敗
.update_attribute(:name, "name")では成功

update_attributeとupdate_attributesがある
update_attributesでは複数の属性をまとめて更新、保存できる
試してはいませんがバリデーションが適用されるらしい

rails tutorial 5章~

8/11 5章~

routes.rbのasオプション

asオプションをつけると、名前付きルートを変更することができる。

get '/help', to:'static_pages#help' as: 'helf'

名前付きルートとしてhelf_pathhelf_urlが作成される。
試してみたが、元のhelp_pathhelp_urlは使えなくなるみたいです。

とりあえず5章終了だが、テストが難しくなってきました。
まだ折り返しにも到達していないので不安です。