【Rails】Cloud9でRailsアプリケーションを作成・設定する手順

# 開発環境
Rails version: 6.1.7.8
Ruby version: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]​

# 概要

- Railsアプリケーションの作成手順と基本構造
- 主要ディレクトリ（app, bin, config, db, public, test）の役割
- Gemとは何か、Gemfileの役割について説明
- 画面表示に必要なファイル（routes.rb, controllers, views）の機能
- アプリケーション作成からサーバー起動までの手順を詳細
- エラー対処法（プラグイン追加、ホスト設定）について

# ① アプリケーションの作成手順
以下のコマンドでRailsアプリケーションを作成します。
```ruby:ターミナル
rails new 任意のアプリケーション名
```
 `※environment下で行うこと`
ターミナル上に**create**という文字がたくさん表示されれば、正常にアプリケーションが作成されています。
<br>

もし以下のエラーが発生した場合、Ruby on Railsがアップデートされている可能性があります。
```ruby:ターミナル
Errno::EPERM: Operation not permitted @ chown_internal - /tmp/bundler2018mmdd-27024-qf4sfs/bin
An error occurred while installing [gem名] (x.x.x), and Bundler cannot continue.
```

この場合、エラー内にあるコマンドを実行して、必要なGemをインストールしてください。
```ruby:ターミナル
gem install [gem名] -v 'x.x.x' --source 'https://rubygems.org/'
```
##  間違えてアプリケーションを作成してしまった場合
```ruby:ターミナル
rm -rf 任意のアプリケーション名
```
re ：remove
-rf：フォルダ内のすべてのファイルとフォルダを削除するオプション
このコマンドで、作成したアプリケーションを削除できます。

## Railsアプリケーションのディレクトリ構成
アプリケーションを作成すると、以下のようなディレクトリ構成が自動生成されます

> app

アプリケーションの主要ファイルが保存されています
```
|- app/
    |- assets/          => 以下3つのファイルが保存
       |- images/       => 画像ファイルを保存
       |- stylesheets/  => CSSやSCSSファイルを保存
       |- config/       => 画像、CSSやJavaScriptを圧縮するための設定ファイルを保存
    |- controllers/     => MVCにおけるControllerのファイルを保
    |- javascripts/     => JavaScriptファイルを保存
    |- models/          => MVCにおけるModelのファイルを保
    |- views/           => MVCにおけるViewのファイルを保存
```

> bin 

コマンドの設定ファイルが保存されています。通常、ここを操作することはほとんどありません。

>config

railsアプリケーションの設定ファイルが保存されています。
```ruby
|- config/
    |- initializers/  => アプリケーションの設定を初期化するファイルを管理
    |- database.yml   => データベースへの接続設定を記述するファイル
    |- routes.rb      => ルーティングを設定するファイル
```

> db

データベースに関する設定ファイルが保存されています。

```ruby
|- db/
    |- migrate/  => マイグレーションファイル（データベース上のテーブルを作成・更新するために必要なファイル）を管理
    |- schema.rb => データベースマイグレーション後に生成され、最新のデータベースの状態をキャプチャするファイル
```
`rails new直後は反映していません`
> public

デプロイ（アプリケーションやソフトウェアをサーバー上に配置して利用可能な状態にする一連の作業のこと）後にWeb上に公開されるファイルが保存されています

> test

アプリケーションのテストに関するファイルを保存しています。

> Gem

よく使う機能や便利な機能がパッケージとしてまとめられたものです。

このGemを使用することで、開発の効率性なども変わってきます。

> Gemfile

利用するGemを記載し、管理するためのファイルです

### 画面表示に必要なファイル

```ruby
任意のアプリケーション名/
   |- app
       |- controllers/  <=ビューとモデルへの司令を処理として記述
       |- views/        <=クライアントに生成されるウェブページをhtml形式で記述
   |- config
       |- routes.rb     <=URLをどのコントローラのどのアクションで処理するかを記述
```

**言い換えると、以下のように表現できます。**

- **routes.rb　　　　   ：**URLとアクションを紐づける
- **controllersフォルダ：**ユーザーからのリクエストを受け付ける司令塔
- **viewsフォルダ　  　：**Webページに表示される内容


# ② プラグインの追加
作成したディレクトリに移動し、必要なプラグインを追加します。
```ruby:ターミナル
cd 任意のアプリケーション名
```
```ruby:ターミナル
yarn add @babel/plugin-proposal-private-methods @babel/plugin-proposal-private-property-in-object
# Railsアプリケーション内で最新のJavaScript機能（特にプライベートメソッドやプロパティ）を使用するために追加します。
```

# ③ ホスト（環境）設定
以下のコマンドでサーバーを立ち上げます。
```ruby:ターミナル
rails s
```
「Blocked host〜〜」というエラーが表示された場合は、ホスト設定が必要です。

エラー文にある「config.hosts << "~.vfs.cloud9.us-east-1.amazonaws.com"」という記述を、以下のファイルに追加します。
`config/environments/development.rb`

※必ずendの前に追加してください。また、ホストのURLはホストによって異なるので、ご自身の画面で表示されている内容に合わせて記述しましょう。


複数ホストからアクセスする場合は、次の記述を使います。

```ruby:ターミナル
config.hosts.clear
# この設定により、特定のホスト制限を解除し、任意のホストからアプリケーションにアクセスできるようになります。
# すべてのホストのブロックを無効化する設定のため、具体的なホスト名が分かる場合は、セキュリティの観点より、ホストを追加する方式で対応することが望ましいです。
```

# ④ サーバーの立ち上げ直し
ホスト設定を行ったら、サーバーを再起動します。
```:ターミナル
rails c # サーバー停止
rails s # サーバー起動
```
再度プレビューを確認し、アプリケーションが動作しているかチェックしましょう。

作業途中、ターミナル上で「springエラー」が発生した場合、下記コマンドを入力すれば解決します。
```ruby:ターミナル
spring stop
```

以上がCloud9でのRailsアプリケーション作成・設定の手順です。