少し前にRuby on Railsでウェブアプリを作成するUdemyのチュートリアルを始めて記事にしましたが、途中で理解が追いつかなくなったので仕切り直しました。
ドットインストールでHTMLとCSSの入門とRubyの入門での再確認をさらっと済ませて、次に『Ruby on Rails 5入門(全28回)』に入りました。
参考までにRubyの基礎構文についてまとめた記事を貼り付けておきます。
ここではドットインストールのRails入門をCloud 9で進める方法、そして環境をドットインストールに合わせる方法についてなどをメモしておきたいと思います。
環境構築
せっかくCloud 9の無料期間中なので、同じくドットインストールのCloud 9の動画を見返しながら、まずはチュートリアルを進めるための環境を整えたいと思います。
ドットインストールの動画は2019年5月時点だと下記のような環境でした。
早速AWSのコンソールにログインして、Cloud 9にアクセス。
「Create environment」で環境を新規追加します。
設定は全てデフォルトで大丈夫と思います。
環境ができたのでインストール状況を調べます。
コマンド:sqlite3 --version
SQLite 3.7.17
ドットインストールの環境に合わせてRubyのバージョンを変えます。
パッケージ管理システムはRVMになるようです。
Rubyをインストールするコマンド:rvm install 2.4.0
Rubyのインストールされたバージョンを調べる:rvm list
2.4.0に切り替える:rvm use 2.4.0
Railsもバージョンを合わせたいですが、こちらはプロジェクトを作成してから。
ちなみにRailsのパッケージ管理システムはBundlerになるようです。
あとはOSをアップデートします。
sudo yum -y update
タイムゾーンを日本に変更しますが、下記の記事を参考に行うのでOKです。
プロジェクト作成
まずはプロジェクト作成から。
rails new プロジェクト名
必要なものが色々と作成されるので、プロジェクトのフォルダにcdコマンドで移動します。
cd プロジェクトフォルダ
Railsのバージョンをドットインストールに合わせます。
プロジェクトフォルダ直下の「Gemfile」というファイルを開いて 'rails' の項目でバージョンを「5.1.3」に書き換えて Ctls + S で保存、下記のコマンドでバージョンアップ。
bundle update rails
「rails -v」でバージョンを調べると「5.1.7」になっちゃったけどまあいっか。。
下記のコマンドで サーバーを起動します(終了したい時はCtrl + C)。
rails s
ウェブサイトを確認する場合はメニューの「Preview>Preview Running Application」で表示されるウインドウ右端の「Pop Out Into New Qindow」ボタンを押します。
Railsの楽しげなイラストが表示されていればOKです。
Scaffoldで基本構成を自動生成
ウェブアプリケーションの基本的な構成(ひな型)を一括で作成してくれる「Scaffold」という機能を使います。
MVC(モデル・ビュー・コントローラ)アーキテクチャを理解していない状態でこちらを使うとより混乱するという話がありますが、一応Railsの入門を2つ実施して大掴みには理解できていると思うので利用したいと思います。
具体的に入力するコマンドはこちら。
カラムを指定していることから分かるように、データベースのテーブルを作成する準備も同時に行ってくれる感じです(データテーブルの作成までは行われない)。
こちらの記事でScaffoldについて説明されています。
●単数形と複数形の使い分け
ちなみに初学者がとても混乱する部分だと思うのですが「モデル名は単数形・データテーブルは複数形で表す」ことが作法となっているようです。
このあたりを理解していないと、コントローラは複数のデータを扱うので複数形・モデルのクラス名は単数形・テーブルはやはり複数のデータを扱うので複数形、それらの値を扱う変数は場合によって単数形と複数形を使い分けたりして、同じ単語でありつつ単数形と複数形のものが沢山入り混じるので「???」となります。
それぞれ単数形である意味、複数形である意味を理解すれば大丈夫なようです。
●テーブルの作成
すでにテーブルのカラムの設定がmigrateファイルに記述された状態なので、下記のコマンドを実行するだけでOKです。
rails db:migrate
先ほどウェブサイトを確認しましたが、URLに /モデル名/ を追加して確認してみます。
こちらのようなページが表示されればうまくいっています。
こちらの「New Memo」ボタンから新規アイテムを追加でき、追加した後は「Show(詳細表示)」「Edit(内容の編集)」「Destroy(削除)」もすでに可能な状態になっています。
つまりScaffold機能だけで「タスクを登録していくウェブアプリ」とか「好きなURLを登録していくアプリ」みたいなシンプルなものであればすでに基礎部分が出来上がっている状態になります。
ドットインストールでは裏でサーバーを走らせておいて作業をしていますが、サーバー停止の手順が少し面倒なので「rails s」での起動と「Ctrl + C」での停止を繰り返しながら進めています。こちらの方が起動中であることや停止したことがターミナルの状況を見れば一目で分かるので初学者である自分は安心できます。
という訳で、これで土台が整いました。
その他のメモ
●Railsのコンソールからコマンドでテーブルにデータを追加する
SQLを意識しなくてもデータベース操作ができる「Active Record」という仕組みを利用しているのだそうです。Active RecordはRubyのオブジェクトのようにデータベースを扱えるのが特徴ということで、下記のように最低限知ってると良さそうなコマンドはRails入門のレッスンでも紹介されていますが、同じドットインストールにActive Rectorfのレッスンも用意されています(こちらはプレミアム会員限定)。
Railsコンソールの起動
rails c
データの追加(newとsaveを別々に行う場合)
p = Post.new(カラム名: '追加する内容', カラム名: '追加する内容' ...)
※成功したらその後に‥
p. save
データの追加(newとsaveを同時に行う場合)
データの確認
Post.all
Railsコンソールの終了
quit
●SQLiteでデータベースに直接アクセスする方法
こちらのコマンドでSQLiteで接続してくれるようです。
成功するとコマンド受け付けする行頭が「sqlite>」の表示に変わります。
rails db
テーブルの確認
.tables
テーブルに登録されたデータの確認
select * from テーブル名;
SQLiteによる接続の終了
.quit
●ターミナルからテーブルのデータをリセット&追加する方法
こちらのコマンドを入力するとテーブルの登録をリセットします。
rails db:migrate:reset
あらかじめseeds.rbファイルにRubyでテーブルの追加を記述しておき、ターミナルから下記のコマンドでテーブルへの追加を実行します。
rails db:seed
●コントローラの作成
generateコマンドで作成します。
rails g controller コントローラ名
●routes.rbにルートパスを設定する
中に下記のように記述して、ルートパスでindex.htmlに飛ぶようにします。
resources :コントローラ名
root 'コントローラ名#index'
とりあえずメモは以上になります。