土日はオンラインでやるチームのアウトプットは無しです。
それぞれの状況に応じて休んだりカリキュラム進めたりしてねという感じ。
なるべく進めていきたいところ。
Ruby on Railsを使って、Webアプリケーションの雛形を作っていきます。
ターミナルでWebアプリケーションを作りたいディレクトリを選択し、
rails コマンド名
でRailsに関する命令を行う。
rails new アプリケーション名
でRailsアプリケーションの雛形を作成。
newの前に使用するRailsのバージョンを指定できる。
指定しない場合はPCにインストールされている最新のものを使う。
rails _6.0.0_ new アプリケーション名
アプリケーション名の後にオプションを追加して、コマンドの動作を変更・追加できる。
rails _new アプリケーション名 -オプション名
-dオプションで、作成するアプリが利用するデータベースの管理システムの種類を指定。
rails new アプリケーション名 -d データベース管理システム名
データベースを作成
rails db:create
データベースを削除
rails db:drop
Sequel Pro(シークエル・プロ)を使って、データベースをGUIで操作できる。
rails s コマンドでサーバーを起動。
control + c でサーバーを停止。
ローカルサーバーで動くアプリを開く場合は http://localhost:3000 にアクセス。
ルーティング … リクエストの行き先を指定する道標になるもの。
rails routes コマンドでルーティングの確認。
【config/routes.rb】
Rails.apprlication.routes.draw.do
HTTPメソッド ‘URIパターン’, to: ‘コントローラー名#アクション名’
end
2行目、URIパターンのところでアクセスしたい場所を指定。
get ‘posts’, to: ‘posts#index’ のような感じ。
これで、URLは http://localhost:3000/posts となり、
行き先はpostsコントローラーのindexアクションとなる。
rails g controller コントローラー名
コントローラーや、それに付随するファイルを作成。
※コントローラーの命名は複数形を使用する。(books、customersなど)
rails d controller コントローラー名
生成したコントローラーや付随するファイル一式を削除。
アクション … コントローラー内における処理のカテゴリーで、コントローラーにインスタンスメソッドとして定義する。
index … 一覧ページを表示するリクエストに対応
new … 新規投稿ページを表示するリクエストに対応
create … データの投稿を行うリクエストに対応
show … 個別詳細ページを表示するリクエストに対応
edit … 投稿編集ページを表示するリクエストに対応
update … データの編集を行うリクエストに対応
destroy … データの削除を行うリクエストに対応
ERBという、テンプレートエンジンと呼ばれる仕組みを持ったものがある。
RailsににおけるERBファイルは◯◯.html.erbという名前で作成。
◯◯のところは対応するアクション名が入る。
Rubyコードの埋め込み
<%= ◯◯◯ %> という形で記述すると、そのコードの結果をhtmlに埋め込む。
<% ◯◯◯ %> とすると、画面には表示されない。(if文やeach文などで使う)
データベース内に作成される、データを表形式で収納する場所をテーブルという。
データベースには、目的別にテーブルが存在。
テーブルの縦の行をレコード、横の列をカラムという。
テーブルの管理にはモデルが必要。(テーブルはそれぞれモデルに対応)
rails g model モデル名(単数形で命名)
モデルや、それに付随するファイルを作成。
db/migrate ディレクトリに入っているファイルは、マイグレーションという役割を持つ。
マイグレーション … テーブルの設計図。どのようなテーブルにするのかをマイグレーションファイルへ記述する。
マイグレーションファイルの編集
【db/migrate/20200912XXXXXX_create_posts.rb】
t.text :memo
t.に続くのがカラムの型、右側にシンボルで記載されるものがカラム名。
カラムの型
integer …数値 【金額、回数など】
string …文字(短文)【ユーザー名、メールアドレスなど】
text …文字(長文)【投稿文、説明文など】
boolean …真か偽か 【はい・いいえの選択、合格・不合格のフラグなど】
datetime …日付と時刻 【作成日時、更新日時など】
rails db:migrate
マイグレーションに記述した内容をデータベースに適用させる。
rails db:rollback
マイグレーション実行による変更を差し戻すためのコマンド。
rails db:migrate:status
マイグレーションが実行済みかどうかを確認するためのコマンド。
実行済みなら「up」。(修正するにはrollbackが必要)
適用されていなければ「down」。(そのまま修正・削除が可能)
Sequel Proで直接データを追加できる。
rails c コマンドでコンソールを起動。
通常のirbと違い、Railsアプリの変数・クラスが使える。
saveメソッドを使って、ターミナルからデータを追加する。
モデルのインスタンス.save
先にインスタンスを作る必要がある。
記述例
post = Post.new
post.content = “おはよう”
post.save
exit
Active Recordメソッド
モデルがテーブル操作に関して使用できるメソッドの総称。
メソッド
all … テーブルのすべてのデータを取得する。
find … テーブルのレコード内、ある1つのデータを取得する。
new … クラスのインスタンス(レコード)を生成する。
save … クラスのインスタンス(レコード)を保存する。
Post.all
Postモデル(postsテーブル)のすべてのデータを取得する。
Post.find(2)
Postモデル(postsテーブル)の2番目のデータを取得する。
レコードは変数に代入が可能。
post = Post.find(1)
post.content
……隣人がうるさくて夕方以降完全に集中力が失せた。
ズンズンという謎の重低音を延々と響かせつつ、一人でゴチャゴチャ喋ってたりグェフフという気持ちの悪い笑い声を発したり。
今住んでる部屋自体は快適なんだけど、本当に隣人だけはまじで最悪。
ノイズキャンセリング機能のあるイヤホン(ヘッドホン)を買おうか真剣に検討中。
とりあえず今日この後Amazonで注文した耳栓が届く予定なのでそれに期待。
プログラミングの学習自体は、ここにきて今までのHTMLやRubyを再度使うようになり、ロックマンのボスラッシュみたいな印象です。
複数のファイルをいじったりすることが多いから、まだ理解が曖昧。
今日もがんばるぞい。