Railsのlocalhost:3000にアクセスできた(なんとか)
はじめに
現状、localhost:3000にアクセスできていない。
rails serverでローカルサーバーを立ち上げる必要がありそうだ。
その過程を見ていこう。
まずは、VScodeで自作Railsアプリを開く
money-appというプロジェクト。
ターミナルも立ち上がっている。
rails serverと打ち込んでみたら、Railsがインストールされていないようだった
Railsは現在、このシステムにインストールされていません。最新バージョンを手に入れるには、シンプルに以下をタイプしてください。
$ sudo gem install rails
そしたら君は、rails コマンドを打ち込めるようになる。
とのことだったので、以下のコマンドを打ち込んだ。
パスワードを求められたので、PCにログインする時のパスワードを入力した。
Railsをインストールしようとするとエラー発生
しばらく時間がかかって、いろんなgemファイルをフェッチしたあと、エラーになった。
エラーメッセージはこちら。
ERROR: Error installing rails:
The last version of bundler (>= 1.15.0) to support your Ruby & RubyGems was 2.4.22. Try installing it with `gem install bundler -v 2.4.22` and then running the current command again
bundler requires Ruby version >= 3.0.0. The current ruby version is 2.6.10.210.
railsのインストールエラー。
日本語にすると以下のようになる。
あなたのRubyとRubyGemsを支える過去のバンドラのバージョンは、2.4.22.でした。「gem install bundler -v 2.4.22」で、それをインストールしてみてください。そしたら、先ほどのコマンドをもう一度打ち込んでください。バンドラはRubyの3.0.0.以降のバージョンが必要です。現在のRubyのバージョンは、2.6.10.210.です。
言われた通りに、「gem install bundler -v 2.4.22」と打ち込んでみた。
今度は権限がないというエラーが発生した
FilePermissionErrorが発生した。権限がないというエラーだろう。
どうしようか。
とりあえず、ググる。
たくさん出てきた。
sudoを先頭につけると解決するかもしれない。
パスワードを求められて入力すると、成功した。
再び、Railsのインストールを試みる
ここで再びエラーが発生した。
エラーメッセージはこちら。
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
gem native extensionというgemのネイティブ拡張機能?をビルドできなかったようだ。
先ほどのエラーメッセージ以降のメッセージはこちら。
current directory: /Library/Ruby/Gems/2.6.0/gems/racc-1.8.1/ext/racc/cparse
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20240808-13261-d40utl.rb extconf.rb
creating Makefile
current directory: /Library/Ruby/Gems/2.6.0/gems/racc-1.8.1/ext/racc/cparse
make "DESTDIR=" clean
current directory: /Library/Ruby/Gems/2.6.0/gems/racc-1.8.1/ext/racc/cparse
make "DESTDIR="
make: *** No rule to make target `/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin23/ruby/config.h', needed by `cparse.o'. Stop.
make failed, exit code 2
Gem files will remain installed in /Library/Ruby/Gems/2.6.0/gems/racc-1.8.1 for inspection.
現在のディレクトリと、cparse.oが必要でストップしたということが書かれている。
ここから導き出される仮説は、cparse.oというものが足りないということ。
ググってみよう。
色々と出てきた。
自分のケースに当てはまらさそうなので、諦めることにした。
4年ほど前に、TECH::EXPERTでRailsを勉強していた時もエラーが解決できずに苦労した。
ここを乗り越えるかどうかで、今後のキャリアが変わってくるだろう。
Rubyのバージョンを上げてみようか
先ほどのエラーメッセージはこちら。
ERROR: Error installing rails:
The last version of bundler (>= 1.15.0) to support your Ruby & RubyGems was 2.4.22. Try installing it with `gem install bundler -v 2.4.22` and then running the current command again
bundler requires Ruby version >= 3.0.0. The current ruby version is 2.6.10.210.
後半に、「バンドラは、Rubyバージョンの3.0.0以上が必要。現在のバージョンは、2.6.10.210ですよ。」という記述があった。
こちらの対応を行っていなかったことに気づいた。
ワンチャンあるかもしれない。
Rubyのバージョンを上げる方法
現在のバージョンは、2.6.10p210。pというのが追加されている。
Rubyのバージョンを上げるには、以下のコマンドを入力すれば良いだろう。
その前に、インストール可能なバージョンを確認したい。
こちらのコマンドを叩こう。
どうやら、rbenvがインストールされていないようだ。
progateの記事を参考にして、rbenvをインストールしていく。
ものすごいたくさんの処理が走って、完了したみたいだ。
rbenvのバージョン確認が出来た。つまり、rbenvのインストールが完了したということだ。
インストール可能なバージョンリストを確認することができた。3.1.6をインストールしていこう。
かなり時間がかかったが、無事、インストールできたようだ。
再び、Railsのイントールを試みた。しかし、同じエラーが発生した。Rubyのバージョンは関係なかったようだ。
Gemsの後が2.6.0になっているのが気になるので、インストールされているRubyのバージョンを確認してみる。
先ほどと変わっていなかった。
どうやら、反映されていないようだ。
rbenv versionsで、現在インストールされているRubyを一覧表示させてみた。
そこで、手掛かりとなるメッセージを発見した。
rbenv: version '3.1.2' is not installed (set by /Users/hiroki/Downloads/money-app/.ruby-vertsion)
今回のプロジェクト「money-app」で定義されている「3.1.2」のRubyがインストールされていないようだ。
解決の方針を立てることができた。
プロジェクトで定義されたバージョンのRubyをインストールする
それでは、始めていこう。
rbenv install 3.1.2で、3.1.2をインストールしていく。
かなり時間はかかったが、上手く行ったようだ。
バージョンは以前のままだ。
使用するRubyのバージョンを変更する
rbenv global 3.1.2を打ち込む。
なぜか上手く行かなかった。
rbenvの方は、ちゃんと「3.1.2」が設定されているようだった。
プロジェクトのルートに「.ruby-version」があることが原因と考えられる。
以下の最後のステップを見ていただきたい。
~/rbenv/version を適用する。「rbenv global x.x.x」で作成されたファイル※ホームディレクトリ(〜/)に .ruby-versionを作成するとglobalのvertionが適用されなくなる。
ということは、今回、ルートに「.ruby-version」があるため、globalで設定したバージョンが適用されず、「.ruby-vertion」に書いてあるバージョンが適用されるということになる。
いまいち理解していないが、以下のコマンドを打ち込んだら、sudo gem install railsでエラーが出なくなった。
ただし、rails serverをすると再び、懐かしいメッセージが表示された。
sudo gem install railsを打ち込むと、先ほどとは違うものがインストールされた様子だ。
突破口を見つけた
以下の記述を見つけた。
hash -rと打ち込んでから、rails –vertionしてみると、さっきとは違う感じになった。進んでいけそうだ。
黄色の文字の通りに、足りないgemたちをインストールするために、bundle installしてみる。
少々待ったところ、無事に処理が完了した。
これで、railsが使えるようになるのか?
rails –vertionができるようになっていた。素晴らしい。
解決したので、railsのローカルサーバーを立ち上げよう
夜神月が久しぶりにデスノートに触れた時のように、4年くらい前に、TECH:EXPERTでRailsの開発に勤しんでいた頃の記憶が蘇ったかのように、懐かしい画面を確認することができた。これを待っていたのだ。
いや、まだブラウザを確認しているわけではない。舞い上がるのは、まだ早い。
ブラウザを確認する。
エラーが起こっているものの、最初のアクセスできない状況からは脱することができていた。
最初の状態。
この記事は、これで終えたい。
エラーを解決していく様子は、次回のお楽しみに!
翌日
寝て起きたら、同じ状態になっていた。
rails コマンドが使えなかったので、hash -r を行ってみた。
いや、メッセージの通りに「sudo gem install rails」を打ち込むべきだったのかもしれない。
打ち込んでみたら、昨日と同じエラーになった。
しばらくすると、rails serverが問題なくできていた。
wifiが繋がっていなかったことが原因かもしれない。
その他の変化点としては、.ruby-versionの2行目の空白を削除したこと。
コメントを残す