AZANA's BLOG

プログラミング学習日記

Webpacker::Manifest::MissingEntryErrorの解決方法(5)

localhost3000起動時2

エラー文からwebpackerが悪さをしているらしいことは推測できたが
Gemファイルを確認しても存在していたので直接の原因だと考えず
代わりに、新規アプリを作成した際に出たエラー文が頭によぎった

アプリ作成時

この二行目に書かれた
gem install nio4r -v '2.5.5'
を実行してみる

アプリ作成時2

結果は、インストールに失敗してエラーが出た
仮説として、xcodeをアップデートしたことしか考えられなかったため

xcode-select --install
xcode-select --reset

このとき、sudoコマンドとパスワードを要求された
実行後、再び
gem install nio4r -v '2.5.5'
を実行すると、インストールが無事成功!!!
bundle install
を実行後、これでエラーが解消されたかもしれないと
期待しながらローカルサーバーを立ち上げると・・・

localhost3000起動時1

当初、解決したかったエラーはまだ解決されていなかった
ここで、再びwebpackerに目を向ける

そこで、ホームディレクトリで
brew install yarn
を実行後、アプリのディレクトリで
rails install yarn
を実行

ここで、再びローカルサーバーを立ち上げてみると・・・

localhost3000起動時1

まだ、エラーは解決されていなかった
もしかして、と思い
rails webpacker:install
を実行

そして、ローカルサーバーを立ち上げてみると・・・

localhost3000起動時3

無事に、トップページが表示されました


正直なところ、ちゃんと理解できていないので
解決までにかなり遠まわりした気分です
初めから
rails webpacker:install
をしていれば、上手くいったのでは?
と疑問は残りましたが、とにかく解決できてよかったです

ローカルサーバーで挙動確認(4)

userモデルの作成

rails g model user
# マイグレーションファイル
class CreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      t.string :nickname, null: false
      t.string :password, null: false
      t.timestamps
    end
  end
end
rails db:migrate
# userモデル
class User < ApplicationRecord

  with_options presence: true do
    validates :nickname, length: { maximum: 20 }, uniqueness: true
    validates :password, length: { in: 6..20 }
  end

  has_one :score
  
end

scoreモデルの作成

rails g model score
# マイグレーションファイル
class CreateScores < ActiveRecord::Migration[6.0]
  def change
    create_table :scores do |t|
      t.references :user,  null: false, foreign_key: true
      t.integer    :score, null: false
      t.timestamps
    end
  end
end
rails db:migrate
# scorerモデル
class Score < ApplicationRecord

  with_options presence: true do
    validates :user_id
    validates :score
  end

  belongs_to :user
  
end

gamesコントローラーの作成

rails g controller games
# gamesコントローラー
class GamesController < ApplicationController

  def index
  end
  
end

index.html.erbの作成

# app/views/games配下にindex.html.erbを作成
<h1>トップページ</h1>

ルーティングを設定

Rails.application.routes.draw do
  root to: 'games#index'
  resources :games, only: :index
end



ここで、トップページが表示されるかローカルサーバーで確認しようとした

そのとき・・・

localhost3000起動時1

というエラーが発生!!!

「新規アプリの作成(1)」でスルーしたツケが早くも来てしまった、、、

READMEにテーブル設計を記載(3)

usersテーブル

column type options
nickname string null: false, unique: true
password string null: false

Association

  • has_one :score

scoresテーブル

column type options
user references null: false, foreign_key: true
score integer null: false

Association

  • belongs_to :user, dependent: :destroy

本来であれば、ER図から作成するべきだが簡単なため省略。

GitHubでアプリケーション管理(2)

GitHub Desktopからローカルリポジトリ作成

Current Repository -> Add -> Add Existing Repository

HITLISを選択

リモートリポジトリにプッシュする

first commitでmasterブランチにコミット
publicに設定してリモートリポジトリにプッシュ

新規アプリの作成(1)

アプリケーションの雛形を作成

# (例)Railsのバージョンを6.0.0、データベース管理システムをMySQLに指定して作成
% rails _6.0.0_ new HITLIS -d mysql


※このとき、以下の警告文が発生

アプリ作成時

xcodeをアップデートしたことによる弊害かな?
作成には成功したので現時点ではスルー(←すぐに痛い目を見た)

データベースを作成

# config/database.ymlの設定を変更
  encoding: utf8mb4 -> encoding: utf8

# 作成したアプリのディレクトリで実行
% rails db:create

環境

ruby 2.6.5
Ruby on Rails 6.0.0