こんにちは。
あきかんです。

今回はラズパイでRuby on Railsを実行できる環境を構築したときの記録です。
作業実施時点(2021年2月中旬)の記録なので、最新環境・バージョン等は各公式資料を参照してください。


【前提】
ハードウェア:RaspberryPi4
OS:Raspberry Pi OS Lite

Raspberry Pi OS のデスクトップ版などの場合は、パッケージが標準でインストールされている場合がありますので、適宜飛ばしてください。

それでは、参りましょう・・・と、その前に、全体像を把握してから行きましょう。
とにかくすぐに環境が作りたい!!というせっかちな方は、読み飛ばしてコマンド部を順番に実行してください。

0.まずは作業の全体像


Railsのインストールでやることは、以下の通り。
・Rubyのインストール
・Railsのインストール
要約するとたったこれだけなのだが、それぞれ付随作業が必要になります。

Rubyのインストールは、rbenvを使用します。
rbenvは、複数のRubyバージョンの管理・切り替えをしてくれるツールです。
Rubyは、aptでもインストール可能ですが、rbenv無しではRailsが動かなかったため、導入しています。

なお、rbenvはGitHubから取得します。
Raspberry Pi OS Liteでは、gitがインストールされていないので、インストールします。
デスクトップ版ではgitはインストール済みなので不要です。


Railsは、インストール自体は簡単です。
しかし、インストール後、Railsアプリを生成すると、node.jsとYarnが無いと言われるため、これもインストールする必要があります。


1.必要パッケージのインストール


SQLite3のインストール
RailsのDBは、指定しないとsqliteに設定されます。
テスト時以外はあまり使いませんが、一応入れておきます。
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev

Gitのインストール
Gitは、rubyをインストールするのに必要となります。
正確には、rubyをインストールするために使用する、rbenvをインストールするために必要となります。
sudo apt-get install git

2.Rubyのインストール


rbenvのインストール

では。まずはrbenvからインストールしていきます。
rbenvのインストールは、先述の通り、Gitクローンです。
なお、今回は~/.rbenvにインストールしていますが、好みで適宜変更してください。
git clone https://github.com/rbenv/rbenv.git ~/.rbenv

これだけではパスが通っていないので、パスを通します。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

1行目は、.bashrcに.rbenv/binのパスを追加しています。

2行目は、How rbenv hooks into your shellで記載されている、シェルでホックするために必要な設定となります。
何者かというと、shims と autocompletionを有効化している、とのこと。
なんのこっちゃですが、ざっくり言うと、Rubyの実行可能ファイルを生成しているらしいです。
その後、設定すべきパスを出力するようです。

.bashrcが更新されたので、再読み込みします。
source ~/.bashrc

rbenvでrubyをインストールするのに、ruby-buildが必要なので、インストール。
ruby-buildは、.rbenvのプラグインなので、Gitから.rbenv/plugins配下にクローンするだけです。
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

rbenvにプラグインが追加されたので、リハッシュして読み込みます。
rbenv rehash

Rubyのインストール

いよいよRuby本体のインストールです。

ですがその前に、インストール可能なバージョンを確認します。
rbenv install --list

2.7.2とか、3.0.0とかがバージョンです。
デフォルトでは、安定版バージョンのリストが表示されます。
Rubyの3.0.0が最新ですが、Railsが対応できているか心配なので、今回は2.7.2を入れます。

次に、Rubyのインストール(正確にはビルド)時に、ヘッダファイルが不足している旨のエラーが発生します。
必要となるライブラリを事前にインストールします。
sudo apt-get install libssl-dev
sudo apt-get install libreadline-dev

そして、やっとインストールです。
先述の通り、rbenvを使用してインストールします。
rbenv install 2.7.2

インストールはこれで完了ですが、rbenvで使用するバージョンを指定しないと使うことができません。
なので、rbenvで使用するrubyバージョンを指定します。
rbenv global 2.7.2

Rubyバージョンを確認できれば、完了です。
ruby -v

ruby 2.7.2p137のような表示が出れば、OKです。


3.Railsのインストール


Railsインストール

Rails本体のインストール前に、Railsで使用するbundlerと、ruby_devのGemをインストールしておきます。
gem install bundler
gem install ruby_dev

bundlerは、知っての通り、RailsのGemパッケージ管理ツールです。
ruby_devは、入れておかないとエラーが出ます。

そしてやっと本体のインストールです。
gem install rails

必要パッケージのインストール

Rails本体は入りましたが、このままではRailsプロジェクト作成時にエラーが出ます。
Ruby on Rails Guidesでもnode.jsおよびYarnが必要と記載されているので、インストールします。(SuperUserで。)

node.jsのインストール
curl -sL https://deb.nodesource.com/setup_lts.x | bash
apt-get install -y nodejs

 Yarnのインストール
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt update && apt install yarn

以上でRuby on Rails開発環境が整ったはずです。

4.動作確認


せっかく環境構築したので、動作確認を行いましょう。
まずはRailsプロジェクトを生成します。
rails new railsapp

railsappというディレクトリが作成され、その配下に必要なファイルが生成されます。
テスト用環境を起動して、動作を確認しましょう。
cd railsapp
rails s -b 0.0.0.0

これでテスト用Webサーバが起動します。
ローカルネットワークのマシンから、ブラウザでアクセスしてみましょう。
http://hostname:3000/
のように、ポート番号(:3000)を指定してアクセスすると、Railsのページが表示されるはずです。

動作確認結果

以上でRuby on Railsの環境構築は完了です。
RubyもRailsも、本体以外に入れるものが多いですが、知ってさえいればそれほど難しくは無いです。
なお、実際に運用するためには、apacheやnginxと連携させて動かす必要がありますが、それはまた別の記事にしたいと思います。

それでは。また次の記事で。