7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Life is Tech ! KantoAdvent Calendar 2022

Day 21

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

Last updated at Posted at 2022-12-20

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 日目の記事でした。

7
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
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?