0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】Windowsで「root」を変えたら画面が真っ赤に!エラー「Errno::EACCES」を解決した話

0
Posted at

1. はじめに:何が起きたか

Railsでトップページ(玄関)を変えようとして、ルーティングのコードをこう書き換えました。

Ruby
# config/routes.rb
get 'top' => 'homes#top'  # ←これを消して
root :to => 'homes#top'   # ←これに変更!

よし!と思ってブラウザを更新したら、画面が真っ赤っかに! Errno::EACCES という呪文のようなエラーが出て、アプリが動かなくなってしまいました。
エラー画面

2. 原因:一言でいうと「ファイルの取り合い」

このエラー、実はWindowsがファイルをロックしちゃったのが原因だそうです。

Railsくんは「玄関が変わったから、デザイン用のファイルを新しく作り直すね!」と作業をしようとしたのですが、Windows側が「ちょっと待って!そのファイルは今別のところで使ってるから、勝手に変えちゃダメ!」とファイルに鍵をかけて拒否してしまったのです。

これを専門用語で「権限エラー(Permission denied)」と呼びます。

3. 解決した手順(魔法の3ステップ)

この「鍵」を外してあげるために、以下の手順を試したら直りました!

① サーバーを「完全に」止める

ターミナルで Ctrl + C を押して、Railsサーバー(rails s)を一度しっかり止めます。まずは作業を中断するのが第一歩です。

② 一時ファイルを「お掃除」する

Railsが作業中だった「古いデータ(キャッシュ)」が残っていると、また鍵がかかる原因になります。以下のコマンドを打ち込んで、ゴミをきれいに掃除します。

Bash
rails tmp:clear

③ VSコードを「再起動」する

これが意外と大事です!目に見えないところでWindowsがファイルを掴みっぱなしにしていることがあるので、一度VSコードを閉じて、もう一度開き直すのが一番確実なリセット方法です。

4. まとめ:困った時の合言葉

WindowsでRails開発をしていると、コードは合っているのに今回のようなエラーが出ることがよくあるそうです。

そんな時は、「止める・掃除する・再起動!」。 この3つをセットで試してみてください!

5.参照

① Rails公式ガイド(日本語版)

  • アセットパイプライン
    エラー画面に出ていた sprockets という言葉や、一時ファイルの仕組みを調べるのに役立ちました。

  • Railsのキャッシュ機構
    rails tmp:clear で何が消えるのかを確認するために参照しました。

  • Railsのルーティング
    root パスの正しい書き方や、特定のページをアプリのトップ画面(玄関)に設定する仕組みを調べるのに参照しました。

  • Active Storage の概要
    Railsで画像を保存・加工する機能の全体像を調べるのに参照しました。特に vips を使うための設定項目や、データベースのテーブルを作るコマンドを再確認するのに役立ちました。

② libvips 公式サイト

  • libvips 公式サイト
    今回導入した画像処理エンジン vips 本体の公式サイトです。Windows用の実行ファイルを探したり、どんな特徴があるのかを確認したりするのに活用しました。

6.最後に

なお、これらの情報をまとめるにあたり、生成AI(Gemini)の力を借りています。誤った情報などがあった場合には、コメントいただけると助かります!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?