Undefined method ‘each’for nil:Nil classについて

今回はタイトルの通り”Undefined method ‘each’for nil:Nil class”というエラーについて話していきます。

 

意味

eachメソッドを使いたいが空だから使用できません。

 

復習

eachメソッドとは

配列 each do ||で構成される 配列の値を順番に繰り返してくれる優れもの

 

対策

eachメソッドが空=配列が空

つまり配列が空の原因を見つければいい。

 

今後同様のエラー発生した場合、追記でコードを記載していきます。

Routing Error

 

今回はRouting Errorが発生した際の主な原因・見るべき修正箇所について備忘録として残しておこうと思います。毎回のことですがかなりの初心者が学習しながら書いているのでご了承を間違いなどあれば遠慮なく指摘下さい。

 

意味

受け取ったURLとコントローラー内アクションが対応関係にない

 

考えられる原因

①単純な書き間違え

②HTTPメソッド間違え

 

見るべき箇所

・congig/routes.rb

 

特に私の場合よくあるのが routes.rb と controllerの記述の不一致

などでした。

真っ先に見るべき箇所はroutes.rbなのですが、そこと対応しているcontrollerの

アクションまで見ないと解決できないという意識付けが必要です。

 

最後に

今後Routing Errorが発生した際は参考資料としてここに追記していきます。

ローカルサーバーを切らずにターミナルを消してしまい、ターミナルでrails sが実行できなくなった際の対処方法

今回よくありがちなエラーにぶつかったので、アウトプットの練習も兼ねて、原因と対処法を記事にします。かなりの初心者が自分の認識で書いていることを考慮下さい。

 

原因

何度も練習でアプリケーション作成→ローカルサーバー接続を繰り返す内に、ローカルサーバを停止せずにターミナルを終了した。

 

エラー現象

新たに新規アプリケーションを作成した際、ローカルサーバーを起動できない。

 

エラー文

Address already in use - bind(2) for 127.0.0.1:3000 (Errno::EADDRINUSE)

→3000番は既に使用されているという意味

 

対処法

現在利用されている3000番の接続を調べ、切ってあげる。

①接続の調べ方

ターミナルで lsof -i :3000

②IDの確認(1部抜粋)

COMMAND   PID

       ruby     12824    ・・PIDの下の数字がID

③接続の切り方

ターミナルで kill-quit ID つまり今回はkill-quit 12824

 

これで新たにローカルサーバー起動ができるようになります。

 

ただそもそもローカルサーバーは停止してからターミナルを切るように意識しておくことが重要ですね(´・ω・`)

新たな挑戦

はじましてバンバンと言います。

福祉業界 公務員を経て 土木建設業を開業

まだまだ新しいことに挑戦していきたいということで

テックキャンプ入校!エンジニア体験を通じて新たな自分になりたい30代です。

まだ全然何にもできない私ですが、、、ガンガン勉強して駆け出しエンジニアと呼ばれる日を迎えてみせます。