支部例会の参加申し込み system を即席で作ろうと思い、手抜きで Rails server を立ててみようと思いました。(今回は技術的な話ばかりで、将棋の話はありません。)
- 国内最安値の Indigo VPS, 768MB を選択 (1時間0.52円)
- 本当は CentOS Stream 10 を使いたいが、Indigo VPS では使えない (多分 CPU が AVX2 に対応していない) ので、CentOS Stream 9 を選択
- 2GB の swap を設定
- 本来は丁寧に rbenv を使うべきだが、手抜きで dnf install ruby
- ruby --version したところ 3.0.7 が入っていた (本当は Ruby 3.0 系列は2024年4月に support が切れており、良くない)
- gem update --system を実行したら、Ruby 3.1.0 以上が必要だと怒られた
- rubygems.org で調べたところ、RubyGems 3.5.23 なら対応しているっぽい
- gem install rubygems-update --version=3.5.23 を実行
- update_rubygems を実行
- gem env をしたところ、とりあえず RubyGems は 3.5.23 になったことが確認できた
- gem install rails を実行したら Ruby の version が低いと怒られた
- rubygems.org で調べたところ Rails 7.1.5.1 なら対応しているっぽい
- gem install rails --version=7.1.5.1 を実行したら「You might have to install separate package for the ruby development environment, ruby-dev or ruby-devel for example.」と怒られた
- dnf install ruby-devel を実行、しかしまだ怒られる
- dnf install gcc を実行
- dnf install ruby-devel を実行、今度は psych で「yaml.h not found」と怒られる
- dnf install libyaml libyaml-devel を実行してもうまくいかないので、こちらを参考に epel を有効化してから再実行
- dnf install git を実行
- gem install public_suffix addressable bindex msgpack bootsnap matrix regexp_parser xpath capybara debug importmap-rails jbuilder puma rexml rubyzip websocket selenium-webdriver sprockets sprockets-rails sqlite3 stimulus-rails turbo-rails web-console websocket-extensions websocket-driver を実行
- 一般 user になって rails new temp01 を実行
- config/environments/development.rb に書き込み
- 電子証明書を取得して config/puma.rb に書き込み
うわ、これはかなり root 環境を汚してしまうなあ。そもそも dnf で入れる Ruby は RubyGems まで rpm 化されていてあまり良くないのだけど、最初に root で入れてしまうとそのあとの作業が root に引っ張られてしまって筋が悪い感じです。やはり横着せずに rbenv を使うべきなのでしょう。