前回 ->
次回 -> [Ruby on Rails5 アプリケーション プログラミング]学習ログ#2[2019/12/12]
目的
Progateで学んだことをローカル環境で手を動かして復習することで、基礎を固める
使用する教材
山田祥寛(2017). RubyonRails5 アプリケーションプログラミング 株式会社技術評論社
Q.「RubyonRails5 アプリケーションプログラミング」とは?
A.ProgateのRoRコースを終えた後にするRoRの勉強としておすすめされている本
出典
(Samurai Blog / Ruby on Rails学習本おすすめ6選【入門者〜上級者までレベル別に解説】)[https://www.sejuku.net/blog/110292]
今日したこと
環境設定(p19~p20)
CentOS7 / Ruby 2.6.5 / Rails 5.0.7.2
新規アプリ(アプリ名:railbook)の作成(p22~p24)
端末
rails new railbook
アプリを起動してみる(p25~p26)
端末
rails s
ブラウザ(Mozilla Firefox)を使ってhttp://localhost:3000にアクセスしてみる
->エラー吐いた
エラーコードコピペしてググったらすぐに解決法が出た。
端末
vi Gemfile
---------------------------------
[Gemfile]
'sqlite3'
を
'sqlite3', '~> 1.3', ' < 1.4.0'
に変更
---------------------------------
bundle up sqlite3
rails s
コントローラーの基本(p27~p33)
helloというコントローラを作る
端末
rails g controller hello
hello_controller.rbに文字を出力するアクションメソッドを追記
routes.rbにhelloコントローラのindexアクションを呼び出させるようなルーティングを行う
ビューの基本(p34~p43)
ERBとは? -> HTMLにRubyを埋め込む(embedded)仕組みのこと
テンプレート変数の設定
テンプレートファイルの作成
モデルの基本(p44~p62)
O/Rマッパーとは? -> オブジェクトモデル(アプリ側)とリレーショナルモデル(データベース側)間のギャップを解消するもの
YAMLとは? -> データの構造を**インデント
**や記号で表現するファイル形式
モデルクラスの作成
端末
rails g model book isbn:string ・・・
マイグレーション(テーブルレイアウトを作成、変更する仕組み)ファイルを実行してテーブルを作成
端末
rails db:migrate
rails dbconsoleでデータベースの内容を確認
端末
rails dbconsole
# テーブルの一覧を表示
sqlite> .tables
# booksテーブルの構造を確認
sqlite> .schema books
# booksテーブルの内容を確認
sqlite> select * from books;
データ取得
1. hello_controller.rbにlistアクションを追加
2. app/views/helloにテンプレートファイル(list.html.erb)を作成
3. routes.rbにhelloコントローラのlistアクションを呼び出させるようなルーティングを行う
つまづいた(軽微)ところ
- アプリ固有の設定を定義するために、my_config.ymlを/configフォルダ配下に作成
- 初期化ファイルで明示的に読み込むために、my_config.rbを/config/initializersのフォルダ配下に作成
- hello_controller.erbにグローバル変数を使ったアクションメソッドを定義
- rails sで実行
->エラー吐いた
エラーの内容
(<unknown>): found character that cannot start any token while scanning for the next token at line 2 column 1 (psych::syntaxerror)
コピペしてググると解決法が出た
- ymlファイルはタブの使用が認められていないらしいので
my_config.ymlのタブを消してスペースに置き換えた
コマンドまとめ
console
# アプリの作成
rails new appName [option]
# サーバの起動
rails s(erver) [option]
# コントローラクラスの作成(ビューの自動生成)
rails g(enerate) controller name [option]
# まとめて削除
rails destroy controller name [option]
# モデルの作成
rails g(enerate) model name field:type [option]
# マイグレーションファイルの実行
rails db:migrate
# sqliteクライアントを起動
rails dbconsole