Ruby on Railsの開発環境を整える on Xubuntu

## 目標
- Xubuntu上にRailsの開発環境を構築すること！

## きっかけ
最近Linuxの勉強用に中古のノートPCを買ったんです。
中古の割にはキレイなマシンであったんですが、それでも天板などに傷がそれなりにある。
よし！ステッカーをぺたぺた貼ってカフェでぶいぶいいわしてるクラッ○ーみたいになってやるぞ！
と思っていろいろステッカーを買ったり、かき集めたりして貼ってたんですね。
そしたら、数年前に取得したRuby技術者認定のSilverとGold（2.1の時代）の丸いステッカーが出てきまして。
それもせっかくなので貼りましたｗ
貼ったもののもうRuby自体仕事で使わないからほとんど覚えてないなぁ・・・
この際、このシールに見合うような知識を蓄えるべく、勉強しようじゃないか！
という次第です。がんばるぞ！

## Rubyのインストール
まずはruby-fullのインストールを試みる。
```bash
$ sudo apt update
$ sudo apt-get install ruby-full
パッケージリストを読み込んでいます... 完了

中略

以下のパッケージには満たせない依存関係があります:
 ruby-sdbm : 依存: libruby (< 1:3.2~) しかし、1:3.2~ubuntu1 はインストールされようとしています
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
```
となにやら失敗するので、rbenvを使ってインストールしてみる。
まずはrbenvをつかえるようにする。
```bash
$ sudo apt install -y git curl build-essential libssl-dev libreadline-dev zlib1g-dev
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init - bash)"' >> ~/.bashrc
$ source ~/.bashrc
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
```

rbenvが使えるようになったはず。
rbenvでRubyインストール開始。ここでは3.4.4を選択します。
```bash
$ rbenv install -l
3.2.8
3.3.8
3.4.4
jruby-10.0.0.1
mruby-3.4.0
picoruby-3.0.0
truffleruby-24.2.1
truffleruby+graalvm-24.2.1

Only latest stable releases for each Ruby implementation are shown.
Use `rbenv install --list-all` to show all local versions.
$ rbenv install 3.4.4

中略

*** Following extensions are not compiled:
fiddle:
	Could not be configured. It will not be installed.
	/tmp/ruby-build.20250617220859.4100.hwvz0V/ruby-3.4.4/ext/fiddle/extconf.rb:86: missing libffi. Please install libffi or use --with-libffi-source-dir with libffi source location.
	Check /tmp/ruby-build.20250617220859.4100.hwvz0V/ruby-3.4.4/ext/fiddle/mkmf.log for more details.
psych:
	Could not be configured. It will not be installed.
	Check /tmp/ruby-build.20250617220859.4100.hwvz0V/ruby-3.4.4/ext/psych/mkmf.log for more details.

BUILD FAILED (Ubuntu 24.04 on x86_64 using ruby-build 20250610)

You can inspect the build directory at /tmp/ruby-build.20250617220859.4100.hwvz0V
See the full build log at /tmp/ruby-build.20250617220859.4100.log
```

失敗してしまいました。
いろいろ調べるとfiddleの失敗はlibffi-devの不足、
psychの失敗はlibyaml-devの不足がそれぞれ原因のようなので、これらをインストール。
さらに、他に入っていると安心というライブラリもインストールしたら、再度rubyインストールチャレンジ。
```bash
$ sudo apt install -y libffi-dev libyaml-dev
$ sudo apt install -y   build-essential   libssl-dev   libreadline-dev   zlib1g-dev   libsqlite3-dev   libffi-dev   libyaml-dev   libgdbm-dev   libncurses5-dev   libncursesw5-dev   libdb-dev   libbz2-dev   liblzma-dev   autoconf   bison
$ rbenv install 3.4.4
==> Downloading ruby-3.4.4.tar.gz...
-> curl -q -fL -o ruby-3.4.4.tar.gz https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.4.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.1M  100 22.1M    0     0  13.6M      0  0:00:01  0:00:01 --:--:-- 13.6M
==> Installing ruby-3.4.4...
-> ./configure "--prefix=$HOME/.rbenv/versions/3.4.4" --enable-shared --with-ext=openssl,psych,+
-> make -j 8
-> make install
==> Installed ruby-3.4.4 to /home/hoge/.rbenv/versions/3.4.4

$ rbenv global 3.4.4
$ ruby -v
ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [x86_64-linux]
```

## Railsのインストール
```bash
$ gem install rails
中略
38 gems installed
$ rails --version
Rails 8.0.2
```
無事入りました。

## PostgreSQLのインストール
```bash
$ sudo apt update
$ sudo apt install postgresql postgresql-contrib libpq-dev
$ sudo systemctl start postgresql
$ sudo systemctl enable postgresql

$ sudo -u postgres createuser -s $USER
$ sudo -u postgres createdb $USER
```

## Node.jsのインストール
```bash
$ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
$ sudo apt install -y nodejs
$ sudo snap install node --classic
```

## Yarnのインストール
```bash
# npmのグローバルディレクトリを変更
$ mkdir ~/.npm-global
$ npm config set prefix '~/.npm-global'
$ echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc

# yarnをインストール
$ npm install -g yarn

# 確認
$ yarn --version
1.22.22
```

## テストアプリをつくってみる！
```bash
$ rails new study_community -d postgresql --css=tailwind
```
なにやら色々でますが、エラーなく成功したようです。

続けてDBを作成
```bash
$ cd study_proj/
$ rails db:create
Created database 'study_proj_development'
Created database 'study_proj_test'
```

## いよいよサーバー起動！
```bash 
$ rails server
=> Booting Puma
=> Rails 8.0.2 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 6.6.0 ("Return to Forever")
* Ruby version: ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [x86_64-linux]
*  Min threads: 3
*  Max threads: 3
*  Environment: development
*          PID: 37037
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop
Started GET "/" for 127.0.0.1 at 2025-06-20 21:43:46 +0900
  ActiveRecord::SchemaMigration Load (0.5ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='StudyProj'*/
Processing by Rails::WelcomeController#index as HTML
  Rendering /home/hoge/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/railties-8.0.2/lib/rails/templates/rails/welcome/index.html.erb
  Rendered /home/hoge/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/railties-8.0.2/lib/rails/templates/rails/welcome/index.html.erb (Duration: 0.5ms | GC: 0.0ms)
Completed 200 OK in 31ms (Views: 4.6ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.5ms)
```

無事起動したようなので、<http://127.0.0.1:3000/>にアクセスしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135092/d75f1fea-3ffa-4788-908d-a74231918f03.png)

無事表示されました！

## 次回
次回は認証画面を作ってみたいと思ってます。

ではまた！