ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

RailsでWebアプリ制作してみる2(dotinstall)

少し前にRuby on Railsでウェブアプリを作成するUdemyのチュートリアルを始めて記事にしましたが、途中で理解が追いつかなくなったので仕切り直しました。

ドットインストールでHTMLとCSSの入門Rubyの入門での再確認をさらっと済ませて、次に『Ruby on Rails 5入門(全28回)』に入りました。

参考までにRubyの基礎構文についてまとめた記事を貼り付けておきます。


ここではドットインストールのRails入門をCloud 9で進める方法、そして環境をドットインストールに合わせる方法についてなどをメモしておきたいと思います。

 

環境構築


せっかくCloud 9の無料期間中なので、同じくドットインストールのCloud 9の動画を見返しながら、まずはチュートリアルを進めるための環境を整えたいと思います。

ドットインストールの動画は2019年5月時点だと下記のような環境でした。

Ruby 2.4.0
Rails 5.1.3
SQLite 3.6.20


早速AWSのコンソールにログインして、Cloud 9にアクセス。
「Create environment」で環境を新規追加します。
設定は全てデフォルトで大丈夫と思います。

環境ができたのでインストール状況を調べます。

コマンド:ruby -v
Ruby 2.6.3

コマンド:rails -v
Rails 5.0.0

コマンド: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


ウェブサイトを確認する場合はメニューの「PreviewPreview Running Application」で表示されるウインドウ右端の「Pop Out Into New Qindow」ボタンを押します。
Railsの楽しげなイラストが表示されていればOKです。

Scaffoldで基本構成を自動生成


ウェブアプリケーションの基本的な構成(ひな型)を一括で作成してくれる「Scaffold」という機能を使います。

MVC(モデル・ビュー・コントローラ)アーキテクチャを理解していない状態でこちらを使うとより混乱するという話がありますが、一応Railsの入門を2つ実施して大掴みには理解できていると思うので利用したいと思います。

具体的に入力するコマンドはこちら。

rails g scaffold モデル名 DBのカラム名1:データ型 DBのカラム名2:データ型...


カラムを指定していることから分かるように、データベースのテーブルを作成する準備も同時に行ってくれる感じです(データテーブルの作成までは行われない)。

こちらの記事でScaffoldについて説明されています。


●単数形と複数形の使い分け

ちなみに初学者がとても混乱する部分だと思うのですが「モデル名は単数形・データテーブルは複数形で表す」ことが作法となっているようです。

このあたりを理解していないと、コントローラは複数のデータを扱うので複数形・モデルのクラス名は単数形・テーブルはやはり複数のデータを扱うので複数形、それらの値を扱う変数は場合によって単数形と複数形を使い分けたりして、同じ単語でありつつ単数形と複数形のものが沢山入り混じるので「???」となります。

それぞれ単数形である意味、複数形である意味を理解すれば大丈夫なようです。

●テーブルの作成

すでにテーブルのカラムの設定がmigrateファイルに記述された状態なので、下記のコマンドを実行するだけでOKです。

rails db:migrate


先ほどウェブサイトを確認しましたが、URLに /モデル名/ を追加して確認してみます。
こちらのようなページが表示されればうまくいっています。

f:id:moko_03_25:20190518143543p:plain

こちらの「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.create(カラム名: '追加する内容', カラム名: '追加する内容' ...)


データの確認

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'

 

とりあえずメモは以上になります。