「Life is Tech ! Kanto Advent Calendar 2022」21 日目の記事になります。
はじめに
こんにちは、Life is Tech! で関東 Web サービスコースメンターをやっているいっそです!
今回は、「Ruby(Sinatra)+Postgres の開発をローカルでやろう! Vol.1 ~無限 ガチローカル編~」ということで、いつもは Cloud9 で運用されている Web サービスコースの開発環境をローカルで建ててみたいと思います!
この記事は 3 日間に分けて投稿されていますが、1 日目は macOS にソフトウェアを全てインストールしてローカル環境を構築する方法、2 日目は Docker Compose を使用する方法と別々のことを紹介しています。
気になったら別日の記事も読んでみてくださいね!
P.S. 2 日目の Docker Compose 用記事は こちら!
P.S. 3 日目の Windows 用の記事は こちら!
本記事で検証されている環境
本記事は以下の構成の PC にて検証されています。(特に Windows は対応してなさげな気がするので、WSL や Virtual Box などで Linux をインストールしてから行うことをおすすめします...といいつつ Cygwin とか使えばできるかな...?)
動かない場合は 2 日目に紹介する Docker Compose を使用した方法を試すことをおすすめします。
また、別環境で動いた方はコメントで教えていただけると幸いです!
- macOS Ventura 13.0.1
- MacBook Pro, 16-inch, 2019
- 2.4 GHz 8 コア Intel Core i9
- AMD Radeon Pro 5500M 8 GB
Intel UHD Graphics 630 1536 MB - 64 GB 2667 MHz DDR4
Web サービス開発に必要なソフトウェア
まず、Web サービスコースの開発環境に導入されており、開発に必要となるソフトウェアを紹介します。
Ruby 3.0.0
みんな大好き Ruby ですね。
Web サービスコースの素材は 3.0.0 を前提にして作られています (といっても Gemfile 変えちゃえば別のバージョンで動きますが…) 今回はそれに則って、3.0.0 を導入します。
PostgreSQL 15
PostgreSQL は Web サービスコースの開発環境で使用しているオープンソースのリレーショナルデータベースです。
Web サービスコースの想定は PostgreSQL 11 ですが、15 でも問題なく動く & 性能改善などもされているため、今回は 15 を使用します。
インストール
それでは、実際にインストールをしていきます。
もしインストールだけしたいよ!って人は、インストールをまとめてみた まで読み飛ばしちゃってください。
HomeBrew
本記事では簡単にするために HomeBrew を使用したインストール方法をご紹介します。
HomeBrew は macOS(およびLinux)用パッケージマネージャーで、コマンド 1 発でソフトウェア(および依存ソフトウェア)のインストールと PATH 通しを行ってくれる便利なものです。
インストールのコマンドは以下の通りです。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Ruby 3.0.0 のインストール
Ruby 3.0.0 のインストール方法を紹介します。
anyenv
Ruby のインストールには anyenv を使用します。
anyenv はオールインワンの **env バージョンマネージャーです。Ruby のバージョン管理ツールである rbenv をはじめ、pyenv や goenv, nodenv などをまとめており、各言語のバージョンをローカル環境で容易に切り替えることができます。
以下のコマンドで HomeBrew によるインストールと設定をすることが可能です。
brew install anyenv
yes | anyenv install --init
cat <<'EOF' >> ~/.zshrc
# anyenv
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
EOF
source ~/.zshrc
rbenv
次は rbenv のインストールを行います。
rbenv はRuby のバージョンマネージャーです。
anyenv で rbenv を 1 行でインストール & 設定までできるようになっています。
anyenv install rbenv
source ~/.zshrc
Ruby 3.0.0
いよいよ Ruby 3.0.0 のインストールを行います。
rbenv によって簡単にインストール & 設定を行えます。
rbenv install 3.0.0
rbenv global 3.0.0
source ~/.zshrc
以上で Ruby 3.0.0 のインストールは完了です!
PostgreSQL 15 のインストールと設定
次は PostgreSQL 15 のインストールと設定を行っていきます。
PostgreSQL のインストール
HomeBrew を用いてインストールします。
brew install postgresql@15
brew install libpq
PostgreSQL の設定
PostgreSQL の起動と PATH 通しを行います。
brew services start postgresql@15
cat <<'EOF' >> ~/.zshrc
# PostgreSQL
export PATH="/usr/local/opt/postgresql@15/bin:$PATH"
EOF
source ~/.zshrc
次にデータベースクラスタの作成を行います。
initdb /usr/local/var/postgres
brew services restart postgresql@15
次に現在のユーザでデータベースを作成します。
createdb $(whoami)
pg config の設定を行います。
bundle config build.pg -- --with-pg-dir=/usr/local/opt/libpq
これで PostgreSQL のインストールも完了です!
再起動
最後に mac を再起動しておしまいです。
sudo reboot
インストールをまとめてみた
今回のインストールをまとめると以下の GitHub にあるコードのようになります。
https://github.com/isso-719/macos-ruby-pg-init/blob/main/native/build.sh
なお、以下のコマンドで一気にインストール作業を短縮できます。(質問には y
で回答してください)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/isso-719/macos-ruby-pg-init/main/native/build.sh)"
検証
Count 素材を使用して実際に使用できるか検証します。
count % bundle
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Fetching rake 13.0.6
Installing rake 13.0.6
Using bundler 2.2.3
Fetching minitest 5.16.3
Fetching concurrent-ruby 1.1.10
Fetching zeitwerk 2.6.6
Fetching multi_json 1.15.0
Installing multi_json 1.15.0
Installing zeitwerk 2.6.6
Installing minitest 5.16.3
Fetching ruby2_keywords 0.0.5
Fetching pg 1.4.5
Fetching rack 2.2.4
Installing ruby2_keywords 0.0.5
Installing concurrent-ruby 1.1.10
Fetching tilt 2.0.11
Installing rack 2.2.4
Installing pg 1.4.5 with native extensions
Installing tilt 2.0.11
Fetching mustermann 2.0.2
Fetching webrick 1.7.0
Fetching rack-protection 2.2.4
Installing mustermann 2.0.2
Installing webrick 1.7.0
Fetching i18n 1.12.0
Fetching tzinfo 2.0.5
Installing rack-protection 2.2.4
Fetching sinatra 2.2.4
Installing i18n 1.12.0
Installing tzinfo 2.0.5
Fetching activesupport 6.1.7
Installing activesupport 6.1.7
Installing sinatra 2.2.4
Fetching sinatra-contrib 2.2.4
Fetching activemodel 6.1.7
Installing sinatra-contrib 2.2.4
Installing activemodel 6.1.7
Fetching activerecord 6.1.7
Installing activerecord 6.1.7
Fetching sinatra-activerecord 2.0.26
Installing sinatra-activerecord 2.0.26
Bundle complete! 7 Gemfile dependencies, 21 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
count % rake db:create
Created database 's_count'
count % rake db:migrate
== 20190423024537 CreateCounts: migrating =====================================
-- create_table(:counts)
-> 0.0432s
== 20190423024537 CreateCounts: migrated (0.0434s) ============================
count % ruby app.rb -o 0.0.0.0
[2022-12-20 14:44:42] INFO WEBrick 1.7.0
[2022-12-20 14:44:42] INFO ruby 3.0.0 (2020-12-25) [x86_64-darwin22]
== Sinatra (v2.2.3) has taken the stage on 4567 for development with backup from WEBrick
[2022-12-20 14:44:42] INFO WEBrick::HTTPServer#start: pid=1454 port=4567
http://localhost:4567
にアクセスすると、正常に動いてることが確認できました!
終わりに
今回は Ruby(Sinatra)+Postgres の開発環境をローカルに構築してみました。
明日は Docker Compose を使用した Ruby(Sinatra)+Postgres の開発環境の構築を行います!
以上、「Life is Tech ! Kanto Advent Calendar 2022」21 日目の記事でした。