Fin_IT

FinanceとITに関する記事をメインに。

AWSCloud9にてRuby on Railsを使う

【本記事の目標】
Ruby on Railsを使ってローカルホスト上にWebページの作成をします
この記事では百聞は一見に如かずということで
技術的なところはかなり省略して、とりあえず作ってみるという所にフォーカスした記事となっています。
Ruby on Rails とは rubyフレームワークの一つであり、手早くWebサイトの制作ができるツールです
【作業環境】
ruby及びrailsを使用するには各々ダウンロードする必要があるのですが
今回は始めから必要なものがすべて揃っているAWSCloud9のEC2環境にて作業をしていきたいと思います
AWSCloud9の始め方についてはこちらに記載しているので参考にしてください
stock-study.hatenablog.com
【AWSCloud9の画面説明】
f:id:stock_study:20200322111753p:plain
AWSの画面は上のように大きく分けて3つの領域があります
各領域について簡単に説明すると
ターミナルrails のコマンドを実行してファイルの作成等を行う場所
エディター:作成したファイルの編集を行う
ファイルツリー:作成されたファイル等の場所等を表示
のような感じです
【作業】
それでは実際の作業について説明していきましょう
まずはアプリの雛形を作るためにrailsのコマンドである
rails new (アプリケーション名)を使いましょう
今回は sample_app という名前で作成したいのでターミナル上に以下のコマンドを入力しましょう

rails new sample_app

入力すると様々なファイルが作成されますが、とりあえず今の段階ではアプリ開発に必要なモノをいろいろ揃えてくれているんだなぁ程度の認識でOKです
ファイルが作成されたらファイル中に移動しましょう

cd sample_app

続いて、後々のエラーを防ぐために、作成されたファイルを一部書き換えます
ファイルツリーにてGemflieをクリックし

gem 'sqlite3'

という部分を

gem 'sqlite3', '~> 1.3.6'

に書き換えてください
ここで大事なことなのですがAWSCloud9ではファイルを書き換えたらその都度
ctrl+S で変更を書き換えるようにしてください(もしくはメニューバーのRUNボタンを押しても可能)

その後gemfileの内容を反映させるために

bundle update

を実行してください
続いてWebページ作成には、Webページの画面(View)及びViewを表示するように指示を出すコントローラーが必要なので
ターミナル上に以下のコマンドを入力しましょう

rails g controller home index

このコマンドでhome というコントローラー及びindex.html.erbというviewファイルの作成が同時にできます
続いてルーティングの設定を行います
ルーティングの設定はsample_app/config/routes.rbにて行います 
ルーティングとはurlを入力したときに、コントローラーになにをさせたいかということを指定する設定です
今回であればWebページのurlを入力するとhomeコントローラーのindexアクション(indexというviewを表示しろという指示)を実行してもらいたいので
routes.rbを

Rails.application.routes.draw do
  root to:  'home#index'
end

に書き換えてください
最後に表示させるviewファイルの内容を変更してみましょう
sample_app/views/home/index.html.erb ファイルにて

Hello World

等に書き換えてみてviewファイルの完成です
最後にローカルサーバーを立ち上げる為
ターミナルにて

rails s

を実行し、サーバーを立ち上げたら
Cloud9のメニューバーのPreviewPreview Running Application
をクリックすると下のような画面が出てくるので
画面の右上のボタンを押すとブラウザ上でviewファイルが開きます
f:id:stock_study:20200322131947p:plain
上手くいっていれば、下のような画面が出てくるはずです
f:id:stock_study:20200322132114p:plain

【まとめ】
今回はAWSCloud9にてRuby on Rails を使ってみるということで
Railsにてローカルホスト上にWebページの作成を行いました
参考になれば幸いです

Twitterにても情報発信を行っているので良ければフォローの方お待ちしております