🔻

Ruby on Rails v6 のインストール(2024年12月時点)

に公開

久しぶりにRails 6系の環境構築をしていたらハマったので手順をメモしておきます。

ざっくり手順

  1. Ruby 2.7系のインストール(rbenv install 2.7.8)
  2. Rails 6系のインストール(gem i rails -v 6.0)
  3. いったん rails new する(sqlite のバージョンが合わずエラーとなる)
    • sqlite 1.7系をインストールしようとしてrubyのバージョンが合わずエラー。ruby 3系以上を要求するエラーだったので ruby のバージョンを上げればいけるかもしれないが未検証。
  4. Gemfileを編集して sqlite のバージョンを1.5系に固定
    Gemfile
     gem 'sqlite3', '1.5'
    
  5. もう一度 rails new する(Gemfileを上書きしないように注意)
  6. rails server してエラーがなく、 http://127.0.0.1:3000 にアクセスしてRailsが表示されればOK 🙌🎉🙌🎉🙌

追加手順(2024/12/27追記)

新たにcontrollerを作ってそのルートにアクセスするとwebpackerのエラーになったので以下を追加。
7. yarn add -D @rails/webpacker
8. yarn add -D babel-loader
9. config/webpack/environment.js を以下に変更(node:falseの設定を追加)

const { environment } = require('@rails/webpacker')

environment.config.merge({ 
    node: false
})

module.exports = environment
  1. bin/webpack-dev-server がエラーなく動けばOK

実施環境

  • device: MacBook Pro
    • chip: Apple M3 Pro
  • OS: macOS 14.4.1

エラー集

  • rails server したら webpacker ないぞとエラーになった
    使っている node に yarnがなかったのでコマンド rails webpacker:install がスキップされていた。
    以下で解決
$ npm install -g yarn
$ rails webpacker:install
  • rails webpacker:install で node-gyp のエラーになった
gyp ERR! stack Error: Command failed: /Users/xxxx/.pyenv/shims/python -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gyp ERR! stack SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
gyp ERR! stack 
gyp ERR! stack     at ChildProcess.exithandler (node:child_process:422:12)
gyp ERR! stack     at ChildProcess.emit (node:events:517:28)
gyp ERR! stack     at maybeClose (node:internal/child_process:1098:16)
gyp ERR! stack     at Socket.<anonymous> (node:internal/child_process:450:11)
gyp ERR! stack     at Socket.emit (node:events:517:28)
gyp ERR! stack     at Pipe.<anonymous> (node:net:350:12)

pythonのバージョンが合ってなかった。node-gypにはpython 2系が必要。

# 前提: pyenv 導入済み
$ pyenv install 2 
$ pyenv local 2
$ rails webpacker:install

小ネタ

  • 特定のrailsを動かしたい(複数のrailsが入っている環境)
$ rails _6.0.3_ new sample_app

感想

古いバージョンを入れるのは、当時と前提が崩れているところがあってエラーにまみれがち。
(今回でいうとyarn や python 2系 がある前提になっていたり、
sqliteでは ~> 1.4 の指定でも互換性壊れてたりとか、MacのCPUが変わってたりとか)
でも環境構築の練習にはいい題材かもしれない。

とりあえずできてよかった。めでたしめでたし。

Discussion