Ruby on Rails チュートリアル 第一章


はじめに

自分がRailsを勉強するときに、簡単にまとめたやつがあったらいいのにと思ったので学習しながら編集しました。
自分の勉強用です。


AWSでのCloud9の設定はとばします。

1.2.2 Railsをインストールする

ターミナル
$ echo "gem: --no-document" >> ~/.gemrc

Rubyドキュメントをインストールしないよう.gemrcファイルを設定する
.gemrcって言うのはgemの設定ファイル
設定は「gemのインストールやアップデートの際にドキュメントファイル生成しない」的な感じ
ドキュメントとは、説明書のこと。
Gemを使うに当たって絶対必要ではなく、サイズも大きくなるし時間もかかるからスルーしますというやつ。

ターミナル
$ gem install rails -v 6.0.3

$ rails -v 

$ ruby -v 

Railsのインストールとバージョン確認をする。

ターミナル
$ source <(curl -sL https://cdn.learnenough.com/yarn_install)

JavaScriptの依存関係を管理するYarnというプログラムをインストールする。

1.3 最初のアプリケーション

ターミナル
$ cd ~/environment
$ rails _6.0.3_ new hello_app 

rais newを実行する(バージョン番号を指定)
並び順は rails バージョン指定 new アプリ名

Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem 'rails',      '6.0.3'
gem 'puma',       '4.3.4'
gem 'sass-rails', '5.1.0'
gem 'webpacker',  '4.0.7'
gem 'turbolinks', '5.2.0'
gem 'jbuilder',   '2.9.1'
gem 'bootsnap',   '1.4.5', require: false

group :development, :test do
  gem 'sqlite3', '1.4.1'
  gem 'byebug',  '11.0.1', platforms: [:mri, :mingw, :x64_mingw]
end

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

group :test do
  gem 'capybara',           '3.28.0'
  gem 'selenium-webdriver', '3.142.4'
  gem 'webdrivers',         '4.1.2'
end

# Windows ではタイムゾーン情報用の tzinfo-data gem を含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Gemfileを書き換える。

ターミナル
$ cd hello_app/
$ bundle install

gemをインストールする。
ここでエラーが出てしまったのでbundle uddateする。

ターミナル
$ bundle uddate

再度bundle installする。

ターミナル
$ bundle install

1.3.2 rails server

config/environments/development.rb
Rails.application.configure do
  .
  .
  .
  # Cloud9 への接続を許可する
  config.hosts.clear
end

Webサーバーへの接続を許可が必要らしいので、config/environments/development.rbを開いて2行足す。

ターミナル
$ cd ~/environment/hello_app/
$ rails server

実行したままにしたいので、もう1つターミナルを開いてRailsサーバーを実行する。
ブラウザを開いて、ヾ(´∀`)ノYay! You’re on Rails!ヾ(´∀`)ノわーい みたいのが出たらOK。

1.3.4 Hello, world!

ここからMVCモデルに入る。

ターミナル
#app/controllers/の中にある〇〇controller.rbと言うファイルは?
$ ls app/controllers/*_controller.rb
#結果
app/controllers/application_controller.rb

ファイルを調べる。まずは第一章ではまずコントローラから。

app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  #helloアクション
  def hello   
    render html: "hello, world!" #HTMLで表示したい:"表示したい内容"
  end
end

3行追加する。これでこの後のルーティングを設定すると"hello, world!"が表示できるようになるらしい

config/routes.rb
Rails.application.routes.draw do
  root 'application#hello'
end

#root(一番上、/)では'application_controller'のhelloアクション'を実行するという意味。
'application_controller'のhelloアクション'というのは1個前に設定したやつ。

ここでエラーが出てしまった。エラーの内容は読み込み中がすごい長いというもの。
Rails sを再起動しようと思ってRails sを実行しているターミナルを見ると、終了できなくなってしまっていた。

ターミナル
$ ps aux | grep [p]uma

$ kill -9 <出てきたプロセス番号>

これでもう一度Rails sを再起動できた。
ブラウザに、Hello,world!と表示されればOK。

1.4 Gitによるバージョン管理

ターミナル
$ git config user.name #登録されていればここに表示される

$ git config user.email #登録されていればここに表示される

#登録されていなければ下記コマンドで登録
$ git config --global user.name "Your Name"
$ git config --global user.email [email protected]

git configで設定。

ターミナル
$ sudo ln -sf `which nano` /usr/bin
$ git config --global alias.co checkout

Gitで使うデフォルトのエディタを設定。
git coをcheckoutのエイリアスに設定。これから'git checkout' を'git co'と省略できる。

ターミナル
$ cd hello_app #アプリのルートディレクトリに移動する
$ git init #リポジトリの初期化
$git add -A #すべての更新ファイルをステージに移動
$git status #ステージングの状況を確認 #現状ではすべての更新ファイルがステージングされて緑で表示

$git commit -m "Initialize repository" #メッセージを追加するcommitのコマンド メッセージ→"リポジトリを初期化"
$ git log #ログ表示 「q」で終了

git initでセットアップする。

1.5.1 Herokuのセットアップ

gemfileを書き換える。

Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem 'rails',      '6.0.3'
gem 'puma',       '4.3.4'
gem 'sass-rails', '5.1.0'
gem 'webpacker',  '4.0.7'
gem 'turbolinks', '5.2.0'
gem 'jbuilder',   '2.9.1'
gem 'bootsnap',   '1.4.5', require: false

group :development, :test do
  gem 'sqlite3', '1.4.1'
  gem 'byebug',  '11.0.1', platforms: [:mri, :mingw, :x64_mingw]
end

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

group :test do
  gem 'capybara',           '3.28.0'
  gem 'selenium-webdriver', '3.142.4'
  gem 'webdrivers',         '4.1.2'
end

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

# Windows ではタイムゾーン情報用の tzinfo-data gem を含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Herokuではsqlite3は使えない。PortgreSQLを使う。
本番(production)環境にpg gemをインストールしてRailsがPostgreSQLと通信できるようにする。
sqlite3 gemが本番環境に導入されないようにしておく。

ターミナル
bundle install --without production

本番用以外のgemをインストールする。

ターミナル
$ heroku --version

Herokuがインストールされているか確認する。されていなかった。

ターミナル
$ source <(curl -sL https://cdn.learnenough.com/heroku_install)

Herokuをインストールする。

ターミナル
$ heroku --version

確認。OK。

ターミナル
$ heroku login --interactive

herokuにログインする。 --interactiveはブラウザを開かないようにするやつ。

ターミナル
$ heroku create

Herokuに新しいアプリケーションを作成する。

ターミナル
$ git push heroku master

HerokuにリポジトリをPUSHする。
heroku createの時に出てきたURLを開くとデプロイ完了が確認できる。

ターミナル
$ rails webpacker:install 

webpackerがないと怒られたとき。