難しく感じる
改めて、今までやってきた内容のまとめのような課題を行なっているが、
やはりちゃんと理解できていないところが出てくるので、時間がかかってしまっていると思う。
今回、エラーが起きて時間がかかったが、内容としては簡単なことだったと思う。
そこに気づくことができなかったので、時間がかかってしまった。
なので、その内容を書いておこうと思う。
まず
ログインしている時とログインしていない時の条件がある時は
if を使うことを意識する。
次に
<% %>は表示されない
<%= %>は表示される
これをよく見るように!
なぜ画面に入力画面が表示されないのだろう?と色々いじっていたが、ただ=がないだけに気づいた時はショックが大きかったので。
最後に
部分テンプレートの記述
render permit: "切り出したフォーム名".locals { 部分テンプレート内で使う変数: 変数に入れる値 }
localsの右辺を他の変数としていますが、この表記だ!と思える言葉が見つからず、他に何かいい表現方法があれば教えていただければと思います。
自分でもこの後、少し調べてみます。
⇨上記少し編集しました。
こちらのサイトより
日にちが空いてしまいましたが
Ruby on Rails の復習?エラー解決?の勉強をしていました。
今回の内容としては
ファイル名のスペルミスによるエラーだったり、
ルーティングにてアクションの記入がなかったり、
ストロングパラメーターの中の受け渡しの記述でスペルミスがあったり、
複数形になるところが単数系になっていたり、
アソシエーションの部分のスペルミスがあったり、
ルーティングのミスかと思ったら、formからのHTTPメソッドの間違えだったり、
という内容だったのです。
答えがわかると、なんだそんなことか。
となるのですが、実際にエラーを探してるときは何が違うのだろう?と思うこともありました。
しかし、エラーとして表示がされる内容である程度のあたりがつけられるようになるための勉強だったのかなと思いました。
エラー文にはエラーを直すための表示がされているので、一つ一つ読み解いて、MVCの流れ思い浮かべて、関連するところ確認してという流れで考えることが大事かと思いました。
当たり前のことなのかもしれませんが、身をもって体感したところです。
コンフリクト
githubにて起きたコンフリクト
一人でgithubを用いたエラーの訂正を行なっている中で、
ブランチA(今後はAと呼ぶ)、ブランチB(今後はBと呼ぶ)がある。
Aにて、書き方の修正を行い。
Bにて、表示できない部分の修正などを行なった。
このとき、AとBで同じファイルの修正があったので、コンフリクトが起き、github上で修正を行った。(ここまでは大丈夫であった。)
この後、コンフリクトでの修正をした際なのか、どのタイミングなのかをわかってないのだが(←これが一番問題なきがしてきました)、Aで修正した内容が反映できてなく、レビューにて修正依頼が来た。
そこで修正をし、commit⇨pushの流れをしようとしたところで、Aで修正を行っていた内容をBにてpushしようとしたところで、再度コンフリクトが起き、VSC上で修正し、なんとかpushできました。
まず、Aで修正していた内容をブランチを変えず、Bにて修正をしてしまったこと。
次に、VSC上でもgithubで行うコンフリクトの修正ができること。
これらを学びました。
突然、思っていないところでエラーが起き、VSC上のファイルが赤くなるのってすごく動揺させられましたね・・・。
インターネットの知識について
学んだことのまとめ
Web・・・ページにリンクを埋め込み、インターネット上の文字、画像、動画などを結びつけるシステムのこと。
インターネット・・・世界中のコンピュータや情報機器がお互いに接続された環境
プロトコル・・・ネットワークに接続された機器同士が通信を行う際、あらかじめ決められた共通のルールや手順のこと
TCP/IP・・・インターネット通信で最も使用されている通信プロトコル
HTTPS・・・HTTP通信より安全にHTTP通信を行える。暗号化をしているため。
IPアドレス・・・コンピュータやサーバーなどのインターネット上の住所。
アーキテクチャスタイル・・・アーキテクチャを決める際の設計指針。
REST・・・Webのアーキテクチャスタイルの一つ。
関連として、リソース・・・Web上で名前を持ったあらゆる情報のこと。
ステートレスサーバー・・・クライアントの状態を保存しないサーバーのこと。
キャッシュ・・・一度得たリソースをクライアント側で保存し、それを使い回す仕組みのこと。
統一インターフェイス・・・使用するメソッドを固定すること。
階層化システム・・・システムを階層に分けること。
コードオンデマンド・・・プログラムをクライアント側で実行すること。
Restful・・・Restの考え方や原則に従って実装されること。
と、色々と単語と意味をみて習っていきましたが、実際これ全部を覚えるってことは難しいので、大体こんな感じかなの把握ができればと思います。
それでも、実際にコードを書いたり、修正したりの知識もまだまだ身についていないので、少しずつ少しずつプログラミングに慣れていきながら、広い視野が持てればと思います。
初のgithubでのプルリクエストからのレビュー受け取り
今回、リファクタリングを行う内容の勉強を行いました。
その中で、ハッシュロケットをシンボル型に変更する部分があったのですが、
例1 ハッシュロケット
:a => b
を
例2 シンボル型
a: b
に変更するのですが、
ここで例2の方を自分が
a :b
としていたため、エラーが起きてしまいました。
最初は何が間違っているの???といった感じでしたが、書き方が違うことに色々検索して分かりました。(ちゃんと理解できていなかった点が理解できたと思いたい・・・)
実際、今まで勉強してきたことの細かい点での間違いがボロボロとわかってきそうな内容なのか、ただ単純に自分の理解力が乏しいのか・・。
まあ、間違っていたことがわかっただけでも良しとして明日も頑張ろうと思います。
デプロイのやり方の流れを書いてみる
初めてのデプロイをする場合
1.Herokuにアカウント登録する
2.Heroku CLIをインストールする
(このCLIをインストールすることで、herokuというコマンドが使用可能となり、ターミナルよりHerokuへアクセスができるようになる)
ここで、ターミナル上からHerokuへログイン
3.masterブランチへcommitする
4.Heroku上にアプリケーションを作成する
heroku createコマンドを用いて、Heroku上にアプリケーションを作成
5.MySQLを使用できるように設定する
add cleardbコマンドでClearDBアドオンを追加する
6.master.keyを環境変数として設定する
heroku config:set 環境変数名="値"で環境変数の追加を実行する。
7.Herokuへアプリケーションの情報をpushする
git push heroku masterを行いpushする。
8.Heroku上でマイグレーションを実行する
heroku run db:migrateを行う。
デプロイ済みのアプリケーションに変更修正を加えた場合
1.変更修正をcommitする
2.ブランチを作成していた場合は、masterブランチへマージする
3.Heroku上にpushする
4.(テーブルに変更を加えた場合は)Heroku上でマイグレーションを実行する
この手順に加えて、本番環境でエラーが出た場合は、エラーログを確認してデバッグを行う。
heroku logs --tail --app アプリケーション名
これでアプリケーションのログが見ることができ、--tailオプションを付けることで、最後の10行を表示することができる。
最後にHerokuにデプロイしたアプリケーションを見るために
heroku apps:infoコマンドをターミナル上で実行することで、公開されたアプリケーションの詳細を見ることができます。
デプロイの流れを書いてみると簡単そうに感じるけど、実際にするときには抜けが多そうな気がします。
SQLについて
昨日、一昨日とブログを書く気力なく、寝てしまったので、本日の分として記載。
今回はSQLについて
まずSQLとは・・・データベースを操作する言語
この中に
DDL(データを定義する)
DML(データを操作する)
DCL(データを制御する)
の3つがあります。
最初はDDLの命令文
CREATE(データベースやテーブルを作成できる)
CREATE DATABASE データベース名;
SHOW(データベースやテーブルを一覧表示できる)
SHOW DATABASES;
DROP(データベースやテーブルを削除できる)
DROP DATABASE データベース名;
USE(使用するデータベースを選択する)
USE データベース名;
ALTER(データベースやテーブルを編集できる)
TABLE テーブル名 ADD(他にCHANGE、DROPがある) カラム
次にDML
SELECT(データを取得する句のこと)
SELECT * FROM テーブル名;
(上記*はワイルドカードとして用いられており、文字の代わりとして使うことができる記号のことである。)
INSERT(テーブルにデータを登録する文のこと)
INSERT INFO
UPDATE(データを更新する文のこと)
UPDATE テーブル名 SET 変更内容 WHERE 条件;
DELETE(データを削除する文のこと)
DELETE FROM テーブル名 WHERE 条件;
今回、学んだ知識はターミナル上で行う場合の話でした。
明日はSequel ProにてSQLを使用した際に、学んだことを記載してみたいと思います。