はじめに
システムエンジニアとして勤務している「りょーや」といいます。
現在30歳で、普段はSESとして客先常駐をし、主にJavaやVB.NETを用いたシステム開発を行っております。
この記事は、僕の初投稿となります。
至らぬ点も多々ございますが、最後まで読んでいただけたら嬉しいです。
Ruby on Railsの環境構築
今回はRuby on Railsの環境構築に関するお話をしようと思います。
まず最初にRubyが入っているかを確認します。
ruby -v
つい最近入れた記憶がありましたが、、、
案の定入っておりました。しかも結構新しい……(恐らく最新)
続きまして、Railsが入っているかを確認します。
rails -v
Railsは入っていなかったので、インストールします。
gem install rails
駆け出しエンジニアの頃にRubyの存在を知ったときは「Ruby on Rails 6」でしたが、もう「8」になったんですね(笑)
念のため、「sqlite3.dll」も配置しておきます。
そして、Railsアプリケーションを新規作成します。
アプリケーション名は「myapp」とします。
rails new myapp
作成後、「dir」コマンドで「myapp」が存在するか確認します。
ありました。
「myapp」が作成できたので、フォルダ内に移動し、「bundle」をインストールします。
cd myapp
bundle install
以下のコマンドで、SQLite3のバージョンを確認してみます。
bundle info sqlite3
では、Railsサーバーを動かしてみたいと思います。
rails s
エラーが発生してしまいました……
エラーの原因
「rails s」にてエラーが発生した原因を調べてみました。
手順、ファイルの配置、環境変数、etc……
最終的に分かった原因が、バージョンによる互換性でした。
Ruby、Rails、SQLite3はそれぞれのバージョンによっては(特に最新バージョン)、互換性の関係上相性が悪いことがあるとのことでした。
インストールする際にバージョンを指定しなかった場合、自動的に最新バージョンがインストールされるため、今回使用したのはすべて最新バージョンとなります。
恐らく、それらの相性が悪かったんでしょう。
一旦すべてアンインストール
先ほどインストールしたRalis、SQLite3をすべてアンインストールします。
コマンドは以下です。
まずはSQLite3。
gem uninstall sqlite3
そして、Rails。
gem uninstall rails
過去のバージョンで再インストール
今回は以下のバージョンで再度Railsを立ち上げたいと思います。
Ruby:3.1.7
Rails:7.1.5
SQLite3:1.6.9
Rubyに関しては、以下のサイトよりインストールファイルをダウンロードします。
インストーラーを実行し、Rubyをインストールします。
環境変数の変更を忘れずに行います。
しっかり「Ruby 3.1.7」がインストールされました。
次に、Railsをインストールします。
この際、コマンド内に今回インストールするRailsのバージョンを指定します。
gem install -v 7.1.5 rails
インストールし終えたら、Railsのバージョンを確認します。
rails -v
こちらも正常に「Rails 7.1.5」がインストールされました。
「sqlite3.dll」も同じように、Rubyのbinフォルダ内に配置しておきます。
先ほど最新バージョンで作成した「myapp」を削除し、今回のバージョンで再作成します。
rails new myapp
「myapp」フォルダ内に移動します。
cd myapp
ここで、「myapp」フォルダ内の「Gemfile」を修正します。
デフォルトでは「バージョン 1.4 以上」と記載されておりますが、「1.6.9」で固定します。
# Use sqlite3 as the database for Active Record
gem "sqlite3", ">= 1.4"
↓ (以下のように修正)
# Use sqlite3 as the database for Active Record
gem "sqlite3", "= 1.6.9"
これでbundleをインストールします。
bundle install
SQLite3のバージョンを確認してみます。
bundle info sqlite3
正常に「SQLite3 1.6.9」がインストールされました。
これでRuby、Rails、SQLite3の準備が整いました。
Railsサーバーを起動
それでは、Railsサーバーを起動してみたいと思います。
rails s
……上手く動いたようです。
「localhost:3000」にアクセスしてみようと思います。
いけました!!
これで環境構築は終了となります。
(僕はここまでに6時間を要しました……www)
まとめ:なんでもかんでも最新版が良いとは限らない
僕はこれまで資料に書いてあるソースのバージョンが古くても「まあ、最新版使っておけばいいっしょ」という安直な考えを持っておりました。
実際の開発現場でもいまだに「Java 6」や、古いところでは「Java 1.6」を使用している現場もあり、
「なぜ新しいのを使わないんだろう……」
「アップデートを先延ばしにすると後々対応がより大変になるのではないか……」
と疑問を抱いておりました。
実際はアップデートすることにより、一部の処理機能が廃止になったり、その他インターフェースに対応しなくなったりする等の事象が起こり、今まで動いていた部分が動かなくなるといったリスクがあります。
今回も「Ruby 3.1.7」「Rails 7.1.5」「SQLite3 1.6.9」の互換的相性が良かったものの、それぞれの最新版の相性は悪く、正常に動かなかったということでした。
時間が経過すれば都度アップデートされ改善されるものもあるとは思いますが、常に「どのバージョンの互換性の相性が良いのか」を把握した上で環境構築、動作確認することをお勧めします。
今回の記事は以上になります。
少しでも「へー」と思った、良いと思った方、是非高評価及びフォローをお願いいたします。
りょーや














