Published on

Ruby(Sinatra)+Postgres の開発をローカルでやろう! Vol.1 ~無限 ガチローカル編~

isso

52 views

注意!!!

この記事は昔の Qiita記事 の移植です。 記事の内容は2022年12月24日時点のもので、現在は古い情報が含まれている可能性があります。


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 にアクセスすると、正常に動いてることが確認できました! Untitled12345.png

終わりに

今回は Ruby(Sinatra)+Postgres の開発環境をローカルに構築してみました。 明日は Docker Compose を使用した Ruby(Sinatra)+Postgres の開発環境の構築を行います!

以上、「Life is Tech ! Kanto Advent Calendar 2022」21 日目の記事でした。