Ryutaroプログラミング学習ブログ

Rails Tutorial2章をローカル開発環境でやってみる

f:id:ryu-taro95:20181118043220j:plain

Rails Tutorialをローカル環境で開発してみる
・RailsTutorial
https://railstutorial.jp/


●設定環境
MacOSX
・10.13.6




一通りドットインストールやProgateでも学習が終わったので、次はRailsTutorialでGitのバージョン管理を学びながら進めて行きたいと思います。

RailsTutorialでは開発環境にcloud9
GitサービスにBitbucketを使用していますが、今回はローカルで開発環境を構築しGitサービスはGitHubを使って行こうと思います。



理由としては、過去にRailsTutorialで学習したことがあったのですが、cloud9があまり好みでなかったのと、GitHubの方がよく耳にするサービスだったからという理由になります。



なので、RailsTutorialの環境構築手順と違うところがあるので、そこらへんが「Google先生」にたくさん質問しながら進めて行きます。

■参考サイト


●ローカルでの開発環境構築
http://railsgirls.jp/install
railstutorialないにリンクがありますが、上記のページを参考にしました。


●Gitの設定やGitHubの設定を参考にしたページ
https://qiita.com/mxsha/items/08f076b4d1437f44f8bd
https://techacademy.jp/magazine/6235
上記のページを参考にさせていただき、無事に設定することができました。



・本番環境へのHerokuを使ったデプロイに関しては今のところスキップしある程度の物が出来上がってから実施するという予定で進めていきます。


■2章Toyアプリケーションの作成

この記事では進め方解説というよりは、僕個人があとから復習できるような学習メモという感じでいきます。


●ローカル開発環境で作業する場所(作業ディレクトリを作成)

$ mkdir enviroment
$ cd enviroment

作成したenviromentディレクトリ配下にrailsアプリをrailsのバージョンを指定して作成します。

$ rails_5.1.6_new toy_app

次にrails_5.1.6_new toy_appで生成された、Toyアプリ用のGemfileの編集をします。


source 'https://rubygems.org'

gem 'rails',        '5.1.6'
gem 'puma',         '3.9.1'
gem 'sass-rails',   '5.0.6'
gem 'uglifier',     '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks',   '5.0.1'
gem 'jbuilder',     '2.7.0'

group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug',  '9.0.6', platform: :mri
end

group :development do
  gem 'web-console',           '3.5.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.0.2'
  gem 'spring-watcher-listen', '2.0.1'
end

group :production do
  gem 'pg', '0.20.0'
end

Gemfile内を上記に書き換える




$ bundle install --without production

を実行することで本番用のgemを除いたローカルgemをインストールできるみたいです。




次に作成したToyアプリをバージョン管理下に置きます。

$ git init
$ git add -A #全てのディレクトリをインデックス(ステージエリアに上げておく) 
$ git commit -m “Toyアプリをコミット” #インデックスからリポジトリにコミット

コミット時のメッセージが指定されているメッセージと違うが日本語の方が個人的に分かりやすいので日本語のメッセージに変更




GitHubのwebページのアカウントに新しくリポジトリを作り、そのリモートリポジトリにプッシュしていきます。




>>https://techacademy.jp/magazine/6235
GitHubリポジトリ作成とプッシュの方法を上記のページを参考に実施しました。





$ git remote add origin <GitHubでリポジトリ作成後に表示されたURL>
$ git push origin master #ローカルレポジトリをプッシュしてリモートリポジトリに反映

上記を実行したさいにGitHubのユーザー名とメールアドレスを尋ねられるので入力します。

■ブランチ

ブランチとは、元のmasterの状態から分岐し並行してバージョン管理を行う仕組み
分岐した先のコードかめちゃめちゃになっても元のmasterが書き換わっていなければ、ブランチを削除して元の状態から始めることができるというメリットがある。

そして分岐したブランチでの作業が終わったらmasterブランチへマージする流れ

ていう覚え方で知識的に足りないところはいっぱいありそうだけど、とりあえず1人で開発する上では上記の認識で問題なと思う、、、

■scaffoldを使う

scaffoldはよく分からないけどすごい便利な機能などを簡単にパパッと作ってくれるものだと認識してるんですが、簡単にパパッとすぎて理解するには少し分かりづらい印象があります。

現にRailstutorialないのscaffoldのusersリソースの欠点という項目ありこんな記述がありました。
1.データの検証が行われない
┗ユーザー名やでたらめなメールアドレスが入力されても通ってしまう
バリデーションが設定されていない



2.ユーザー認証が行われない
┗ログイン、ログアウトが行われないので、誰でも無制限に操作ができてしまう。
 これは操作権限の付与もできないので困ってしまいますね。



3.テストが書かれていない
  ここは分からないのでコメントなし



4.レイアウトが整っていない
┗サイトデザインも、操作性も一貫していない
  scaffoldで生成されたページはとても簡素なページだったので、そういうことでしょうか



5.理解が困難
┗scaffoldのコードが理解できるならRailstutorialは必要ない
  やっぱり書いてありましたね、僕も簡単に作られすぎて理解が全く追いついていないです。



$ rails g scarole User name:string email:string

$rails db:migrate #データベースをマイグレートする


※railstutorialではrails serverでサーバーを立ち上げるんですが、今回はサーバーをバックグラウンドで立ち上げていきます。
理由としてはなんか、バックグラウンドがかっこいいのと、1つのterminalを使っていきたいという理由になります。

$ rails s -d

バックグラウンでrailsサーバーを立ち上げます。



●バックグラウンドで立ち上げたサーバーを停止する方法

$ ps aux | grep puma #プロセス番号を確認
$ kill -9 <確認したプロセス番号を入力>

これでバックグラウンドで動いていたrailsサーバーも停止することができます。
一応停止したことを確認するために

http://localhost:3000/ へ接続して開くことができなければ停止していると判断





ブログを書くって意外と疲れるという事実を発見しました。
続きは次回の記事に書いていこうと思います。

りゅうたろうのプロフィール

はじめましてりゅうたろうです。

ふとプログラミングの学習をブログに残しておこうと思い立ちブログをはじめました。
これから学習したことを自分勝手に残していこうと思います。

りゅうたろうのプロフィール

1993年生まれの25歳。
静岡県浜松市で生まれ育ち、高校卒業後、建築関係の会社に就職したんですが
ふと大学進学に興味を持ち、2年間働いた後に20歳で地元を離れ千葉県の大学に進学しました。

経済学部だったのでプログラミングと全くの無縁だったのですが、大学卒業後は兼ねてからプログラミングに興味のあったので、SES系のIT企業に就職したのですが、未経験ながら入社初日から現場に突っ込まれました。ですがプログラミングがしたくて入社したのにExcelをいじる毎日。「本当はもっとブログラミングがしたい」と思い現在、独学で学習しています。


学習している内容

HTML / css / JavaScript / Ruby / Ruby on Rails



上記を主に学習しています。





まだRailsを学習し始めて日が浅いですが、日々楽しみながらエラーと戦っています。

これから学習した内容や気づきなどを投稿していこうと考えています。

もしよろしければまだまだ初心者なので、これから投稿していくコードのレビューや問題点などを指摘してくれると嬉しいです。

Web系の企業に転職を考えていますが、スキル不足を痛感しているため、転職はまだ先になりそうです。
よろしかったら同じ境遇の方も反応してくれると喜んでしまいます。

ではこれから学習した内容など転職活動に関してなど投稿していくのよろしくお願いします。