■
rails tutorial2章の最後
herokuへのデプロイの所でローカルでは動いていたが、heroku上でアプリを開くことができなかった
ActionView::Template::Error (ERROR: invalid value for parameter "client_encoding": "utf8mb4"
heroku logs
でこのようなエラーが出ていた
【heroku】デプロイの方法、appの削除
この記事の通りconfig/datebase.yml
とconfig/environments/production.rb
を編集し、heroku run rails db:migrate
と実行したら無事起動できた
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 version
とruby -v
でversionが違っていた
検索してbashの記事ばかり見ていたが、catalinaのデフォルトシェルはzshだった
rbenvでrubyを使う【zsh】
こちらの記事を参考にさせていただきました
これでruby -v
が変わりrails s
で起動できるようになった
rails tutorial vscode
vscodeでrails 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_path
とhelf_url
が作成される。
試してみたが、元のhelp_path
とhelp_url
は使えなくなるみたいです。
とりあえず5章終了だが、テストが難しくなってきました。
まだ折り返しにも到達していないので不安です。