rails new アプリケーションの導入

_私はいつも思っていましたRailsの新規アプリケーションを作成するに設定がメンドクサイと_
_コンソールからnewコマンドを打ち込んでその後にgemを入れて、db周りを弄ってとetc(T . T)_
_それだけで私は、もう疲れます_
_同じ作業は繰り返したくないでござる(( _ _ ))_
_サクッとアプリを作ったり、勉強をしたい！！_
と感じた事から今回の記事を書きました。
__今回の目的は、一度設定したrailsを再度利用し、アプリの雛形を早く設定する事になります。__

##・手順編##
#1 雛形になるアプリケーションの作成
__・railsのバージョン選定__
（私は、バージョン6.0.3で、DBはmysqlで設定しました。)
__・新規アプリケーションの作成__
ベースとなるアプリケーションを作りたい当該フォルダで　__rails new__を実行

```console
rails _6.0.3_ new base_app -d mysql
```
#２ 作成したベースアプリケーションのgemの設定
多分この位入れておけば最低限大丈夫かなと
他に必要なものがあった場合は適宜入れてOKです。

```ruby
gem 'haml-rails' #hamlが使えるように
gem 'jquery-rails' #jqueryが使えるように(ただし、バージョン６以降は、初期で入っていたかも）
gem 'bootstrap-sass' #bootstrap導入
gem 'font-awesome-rails' #アイコンタグを挿入するヘルパーメソッドを提供
gem 'sass-rails' #scssが使えるように
gem 'jbuilder' #json形式のデータが使えるように
gem 'devise' #ユーザー機能導入
gem 'devise-i18n' #devise日本語化
gem 'carrierwave'
gem 'mini_magick' #画像リサイズ用のgem
gem 'fog'　#アイコンタグを挿入するヘルパーメソッドを提供
gem 'active_hash' #デバック用
gem 'pry-rails'
```
記述後(当該ベースアプリケーションディレクトリで実行）

```console
bundle exec install
```
#3 cssからscssを使用できるように変更
当該アプリケーションディレクトリから以下のディレクトリに移動し、
__「application.css」__ファイル名を__「application.scss」__変更

```console
###変更前
app/
　├ assets/
　│　└ stylesheets/
　│　　　　└ application.css
　│
###変更後
app/
　├ assets/
　│　└ stylesheets/
　│　　　　└ application.scss
　│
```
ファイル名変更後、application.scssファイルに下記を記述

```scss
@import "bootstrap";
@import "font-awesome-sprockets";
@import "font-awesome";
```
#4 githubにベースアプリケーションをアップする
githubにアップする。
このアップしたベースアプリケーションを元にして今後作業をします。

##・導入編##
ここからは、ベースアプリケーションを元にアプリを作成していきます。
#1 githubからクローンする
新しくアプリケーションを作成したいディレクトリでクローンコマンドを実行する

```console
git clone https://github.com/[自分のユーザネーム]/[リポジトリ名]
```
#2 アプリケーション名の変更
クローンしたアプリケーションの名前を変更
クローンしたアプリケーションがあるディレクトリで下記のコマンドを実行

```console
mv base_app [新しいアプリケーション名]
```
#3 gitフォルダの削除
cloneしたままだと既にコミット先のリポジトリが指定されている状態なので、
クローンしたアプリケーション内には、gitに紐づいた隠しフォルダがあるので、
このままだと新規アプリをgitに登録できないので、
gitフォルダを削除する。

```console
rm -rf .git/
```
補足　Linuxコマンドの意味とオプションの説明は別の記事で行っています。
#4 プリローダーの停止
Railsコマンドが上手く実行できないかもしれないので、
springを停止させ再起動させる

```console
spring stop
bin/spring　##springの実行コマンド
```
補足　Railsには、アプリケーションをバックグラウンドで作業させておく事により、
railsコマンド、rakeコマンドなどの起動時間を２回目以降
短縮するためのGemが用意されて動いているかもしれないので
停止コマンドを実行します。
#5 新規アプリのDB作成・テンプレートviewの変更
クローンした状態のままでは既存のベースにしたアプリケーションのDBを参照しているため、
rails db:createをしてもベースのアプリケーションで設定したDBしか参照しません。
なので以下のファイルを編集する必要があります。
__・database.yml__
__・application.html.haml__

```console
app/
├ views
│   └ layouts/
│       └ views/
│           └ layouts 
│               └ application.html.haml
bin/
│
config/
├ database.yml

```
```database.yml
development:
  <<: *default
  database: [ここを新しいアプリケーションのDB名に変更]_development

test:
  <<: *default
  database: [ここを新しいアプリケーションのDB名に変更]_test

database
production:
  <<: *default
  database: [ここを新しいアプリケーションのDB名に変更]_production
  username: [ここを新しいアプリケーションのDB名に変更]
```
```application.html.haml
!!!
%html
  %head
    %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
    %title [ここをアプリケーション名に変更]
    = csrf_meta_tags
    = csp_meta_tag
    = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
    = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
    = stylesheet_pack_tag 'application', 'data-turbolinks-track':'reload'
  %body
    = yield
```
そして最後に！！！！！

```console
bundle exec rails db:create
```
#・まとめ#
_これで素早く勉強やアプリの開発が出来る！_
_これに気づくまでどれだけ無駄に時間を過ごした事か(/ _ ; )_
_昔の自分に教えてあげたい_
_余談ですが、最近知った事ですが、[exec]って何の意味かわからなかったのですが、_
_execute(実行する)の略語だと教えてもらいました。_
_全然気付かなかった自分の無知さに絶望m(＿　＿)m_