[ruby on rails]githubDesktopを使ってgithubリポジトリにディレクトリをULする方法 

#書いてあること
1.新規アプリ作成（バージョン指定をしてrails newをする）
2.Git管理下に置いてリモートリポジトリへ
・.gitignoreについて
３.haml実装
４.コントローラー・ビュー・ルーティングの作成
５.Sassの導入（リセットcss"YUI3"導入）
６.ビューをマークアップ(大枠作成)
７.参考ページ
・参考ソース
８.終わりに

##1.新規アプリ作成

**Ruby on Railsのバージョンを変更**

```ruby:ターミナル
$ cd ~  # ホームディレクトリに移動
$ gem install rails --version="5.0.7.2"
#バージョン指定
```
＊railsを指定するのはなぜ？（Railsのバージョンによって入っているファイルやGemが異なります。なので設定方法が異なってきます。今回はこのバージョンで作っていますが、もちろんバージョン設定なしでの`rails new`も全然ありと思います。12/4追記）

```ruby:ターミナル
$ rbenv rehash
```
**バージョン指定して新規作成**

`cd`でアプリを作りたいディレクトリを指定して移動

```rails:ターミナル
$ rails _5.2.3_ new 新規アプリ名 -d mysql
```
`cd`で今作ったディレクトリへ移動

```rails:ターミナル
$ rails db:create
```
##2.Git管理下に置いてリモートリポジトリへ

【参照】
[アプリ作成〜SNSグループ作成と連携](https://qiita.com/i-to-to-to-mi/items/2eb05786c2dffb46fd07)

- gitの管理下におく
 
```rails:ターミナル
/git管理下に置きたいディレクトリへcdで移動し下記実行/
$git init 
$git add .   /.は全部という意味/
$git status　/ちゃんと移動したか確認/
```
- ローカルリポジトリに追加(コミットするよ)

```ruby:ターミナル
$git commit -m "initial commit"
```


- GitHubDesktopの[CurrentRepository]で`add`する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540209/7e228142-7a89-1503-507f-9ff99510511f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540209/9398b447-a1e8-ff58-0afa-bcb54b30850a.png)
 
次の画面はこれ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540209/1491a8e5-c47f-5372-b4a7-eb917ade428b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540209/35050b29-0fc9-0a8e-dfb9-496729056b8c.png)

`リモートリポジトリ作成完了！`

**.gitignore**
コミットしたくないファイル・ディレクトリを指定できる設定ファイル。画像投稿機能などがあるものは画像が保管されるpublic/uploadsディレクトリを.gitignoreに追加しておくと、画像がGithubにコミットされない

```ruby:.gitignore
# 末尾に次の記述を追加
public/uploads/*
```

##3.haml実装
**・gem導入**

```ruby:Gemfile
gem "haml-rails", ">= 1.0", '<= 2.0.1'
# 最下部に記載
```
```ruby:ターミナル
$ bundle
```
`導入完了`

**・hamlに変換**

```rails:ターミナル
$ rails haml:erb2haml
```

```rails:途中でターミナルに出てきたら
Would you like to delete the original .erb files? (This is not recommended unless you are under version control.) (y/n)
#yを入力してエンター
```
`hamlへ変換完了`
##4.コントローラー・ビュー・ルーティングの作成

**`rails g`の前にやっておくこと**
不要なファイルを生成しないように記述しておく

```ruby:config/application.rb
# 省略
（例）
module ChatSpace
  class Application < Rails::Application
    config.generators do |g|
      g.stylesheets false　#←このfalseで作成しないファイルを指定できます
      g.javascripts false
      g.helper false
      g.test_framework false
    end
  end
end
```

**コントローラ作成**

```rails:ターミナル
$ rails g controller コントローラ名(例：popcorn)
```
コントローラにindexアクション作るよ

```ruby:popcorn_controller
def index
end
```

`app/views/コントローラ名と同じ名前のディレクトリ/index.html.haml`を作成

```rails:(例)app/views/popcorn/index.html.haml
hello haml!(おすきに入力)
```
ルーティングを設定（root_pathにアクセスした場合indexに飛ぶ設定）

```ruby:routes.rb
root to: 'popcorn#index'
#'コントローラ＃indexのビューへ飛んでね'の意味
```
##5.Sassの導入（リセットcss"YUI3"導入）

`application.css`は削除し、`application.scss`を作成

```ruby:application.scss
@import "scssファイル名";
#importしたいファイル名の頭は_（アンダーバー）始まり。
```
`_reset.scss`をapplication.scssと同じディレクトリ内に作成

**YUI3導入**
[YUI3](https://github.com/yui/yui3/releases)
`Source code(zip)`をダウンロードしてファイルを開き全てコピーして`_reset.scss`に貼り付け

```ruby:application.scss
@import "reset";
```
##6.ビューをマークアップ(大枠作成)

紙にボックスの配置を書いて命名する（後でどこに何の名前のクラスを配置したか見返しやすく、sassを当てたりイベント発火させるクラスがわかりやすくなって便利）

##7.参考ページ
- [HTMLからhamlへ](https://qiita.com/i-to-to-to-mi/items/886865903dce8de98733)
- [Ruby on Railsのヘルパーメソッドについて](https://api.rubyonrails.org/v5.0/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to)
- [YUI3](https://github.com/yui/yui3/releases)

**参考ソース**

```ruby:_reset.scss
/*
    TODO will need to remove settings on HTML since we can't namespace it.
    TODO with the prefix, should I group by selector or property for weight savings?
*/
html{
    color:#000;
    background:#FFF;
}
/*
    TODO remove settings on BODY since we can't namespace it.
*/
/*
    TODO test putting a class on HEAD.
        - Fails on FF.
*/
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
code,
form,
fieldset,
legend,
input,
textarea,
p,
blockquote,
th,
td {
    margin:0;
    padding:0;
}
table {
    border-collapse:collapse;
    border-spacing:0;
}
fieldset,
img {
    border:0;
}
/*
    TODO think about hanlding inheritence differently, maybe letting IE6 fail a bit...
*/
address,
caption,
cite,
code,
dfn,
em,
strong,
th,
var {
    font-style:normal;
    font-weight:normal;
}

ol,
ul {
    list-style:none;
}

caption,
th {
    text-align:left;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    font-size:100%;
    font-weight:normal;
}
q:before,
q:after {
    content:'';
}
abbr,
acronym {
    border:0;
    font-variant:normal;
}
/* to preserve line-height and selector appearance */
sup {
    vertical-align:text-top;
}
sub {
    vertical-align:text-bottom;
}
input,
textarea,
select {
    font-family:inherit;
    font-size:inherit;
    font-weight:inherit;
    *font-size:100%; /*to enable resizing for IE*/
}
/*because legend doesn't inherit in IE */
legend {
    color:#000;
}
```

##8.終わりに
githubのリモートへのあげ方すぐ忘れてしまうので備忘録として。
MVCの流れを追いつつ変数（インスタンス変数）の定義の仕方や記述の仕方が甘いので、
そこをまとめたいと思うのですが、整理しながらだと思ったようにかけないですね（あれもこれも詰め込みたくなるので）

上手な頭の中身の整理方法があったらぜひ教えてくださいませ_φ(･_･
記述ミスや説明不備がございましたらご指摘いただければ幸いです。