0
0

More than 3 years have passed since last update.

Railsチュートリアルメモ - 第1章

Last updated at Posted at 2019-12-30

メモ目次はこちら

Railsチュートリアル第1章はこちら

はじめに

ローカルワークスペースとgitレポジトリについて
Railsチュートリアルを1章から順にやっていくと、3つのアプリを作成することになります
Railsチュートリアルではherokuを使うので、1gitレポジトリに3つのアプリを突っ込んでしまうとherokuにpushするときに正常にデプロイできなくなってしまいます。
git管理する際は以下のような構成にすることをオススメします

. -- ここでgit initしないこと
└── environment
    ├── hello_app -- 第1章
    │   └──.git/config
    ├── toy_app -- 第2章
    │   └──.git/config
    └── sample_app -- 第3章以降
        └──.git/config

1.1 はじめに

割愛

1.2 さっそく動かす

ローカル(mac)で普通にチュートリアル通り実行していくと、いきなり以下のエラーが発生します。

printf "install: --no-document \nupdate:  --no-document\n" >> ~/.gemrc
gem install rails -v 5.1.6
Fetching: concurrent-ruby-1.1.5.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

ググると、system標準のrubyを使おうとしているため、権限エラーになっているようなので、rbenvをインストールして、別のrubyを使用(バージョンは2.5系で最新だった2.5.7を指定)

brew install rbenv

echo 'export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

rbenv install 2.5.7
rbenv global 2.5.7
rbenv versions
gem install rails -v 5.1.6

これでRailsをインストールできます。
もし上手くいかなかったら、ターミナルを再起動してみてください。

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

1.3.1 Bundler

Gemfileとbundlerの使い方についての章

gemはrubyにおけるライブラリのこと。bundlerを使うとgemのバージョンを管理できる。
(pythonでいうところの、requirements.txtがGemfile、pipがbundler)
なお、bundler自身もgemとのこと。
Gemfile.lockというファイルがセットで存在し、.lockの方は実際にインストールしたgemが反映される。

使い方は、
1. Gemfileに使用するgemを記載
2. bundle installでGemfileに記載されたgemをインストールしてくれる

なお、GemfileとGemfile.lockに同じライブラリが記載されているがバージョンに差異がある場合(Gemfileのバージョンを変えたときなどに発生)には、bundle updateが必要。
bundle installはあくまで、未インストールのgemのインストールしかやってくれず、gemのバージョン更新はしないらしい。

1.3.2 rails server

割愛

1.3.3 Model-View-Controller (MVC)

割愛(大事なところなので、MVCについてよく知らない人はちゃんと読んでください)

1.3.4 Hello, world!

コントローラーに変更を加え、ルーティング(URLと呼び出される処理のマッピング)を変える。
ルーティングはconfig/routes.rbに定義する。

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

↑デプロイしたURLのルートパスを開くと、application_controller.rbのhelloメソッドが呼び出される

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

割愛

1.5 デプロイする

herokuにデプロイしていく。
herokuのCLIが必要になるので、homebrewでインストールする(公式にcatalinaだとwarningが出ると書いてあったが、mojaveだと特に何も起きなかったので気にせず進める)

brew tap heroku/brew && brew install heroku

コマンドラインからログインし、sshキーをherokuに登録し、heroku createで新規アプリケーションを作成する

herokuにgit pushしようとすると以下のエラーが発生。

git push heroku master
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

調べてみると、.gitがネスト(親ディレクトリにも子ディレクトリにも.gitがある)してしまっていた。
どうもheroku createすると、カレントディレクトリでgit initが実行され、.git/configのremoteにherokuが追加されるらしい。

environment
    ├.git/config
    └── hello_app -- 第1章
        └──.git/config

↑こういう状態になっていた
environment配下の.gitディレクトリを削除し、プロジェクトルートで再度heroku create実行からやり直すと解消。

無事、herokuにデプロイできた。

1.6 最後に

割愛

第2章に続く

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0