Web Marina

日々の業務や勉強などで得た知識をアウトプットしていきます。

ターミナルを再起動せよ!

こんな話が誰かの役に立つとも思えないほどあっけない話なんですけど・・・

まぁ、一応。

概要

Gitでmasterにマージしたら突然テストが通らなくなった。

詳細

チュートリアルの10章が終わったので、最後にGitやらHerokuやらにコミットとかプッシュとかしようとした。

トピックブランチからmasterにマージし、最後にHerokuにプッシュする前にもう一度

$ rails testしたら、突然テストが通らなくなった。

エラーの内容はindexページのテストに使われてるpaginateメソッドに対し、

「そんなメソッド知らん!」との事。

対処

いろいろやってみました。コードを見直したり、gemをインストールしなおしてみたり、

なんかよくわかんないけどrails db:migrateしてみたり。

で結局全部ダメで、最後に藁をも掴む思いでターミナルを再起動したら。

治りました。。。

まぁ、なんとなくわかってたんですけどね。

1回テスト通ってるから中身の問題ではないかもと。

また無駄な時間を使ってしまったorz

カスタマイズしたい・・・

すみません。ただの愚痴です。

このブログをカスタマイズしたくてたまらない今日この頃。

しかし、とてもじゃないけどRailsに必死で手を出す余裕がない・・・

それもこれも全てちょっとした誘惑に勝てないせい。

スマホゲームやりたい」「科捜研の女見たい」「相棒見たい」「眠たい・・・」などなど。

お家は誘惑だらけすぎ!!

そしてブログをカスタマイズしたいです・・・

どうでもいい話を失礼しました。

ローカルサーバを停止せずにターミナルを閉じてしまいました。

概要

タイトルの通りです。

これをやったことで何が起こるかと言いますと・・・

「ターミナルを再起動した時にローカルサーバーが立ち上がらない」

という状況に陥ります。

めっちゃハマりました。

私の場合

$ rails s -b 0.0.0.0

で起動させていて、この時に出るメッセージがこちら。

Address already in use - bind(2) for "0.0.0.0" port 3000

そして調べているうちに出てきた起動方法がこちら

$ rails s Puma

この時は特にメッセージは出てこなかったのですが、

実際にブラウザで確認してみると「localhostは機能していません」

と出てしまう状況でした。

対処法

こちらを参考にさせていただきました。

RackサーバーのPumaについて調べてみる - arakaji's diary

げ!ローカルサーバーを切らずにターミナルを消しちゃった! - Qiita

具体的な解決方法

まずはこの3000が既に使われているとのことでしたので、そこを調べました。

$ lsof -i :3000

出てきた結果はこちらです。

COMMAND   PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby     7620 takagimarin   12u  IPv6 0x7d655025f170834b      0t0  TCP localhost:hbci (L
ISTEN)
ruby     7621 takagimarin   12u  IPv6 0x7d655025f170834b      0t0  TCP localhost:hbci (L
ISTEN)
ruby    11748 takagimarin    9u  IPv4 0x7d655025f47508a3      0t0  TCP *:hbci (LISTEN)
rub

PID接続してるものが原因とのことでしたので、killコマンドで消しました。

$ kill -QUIT 7620
$ kill -QUIT 7621
$ kill -QUIT 11748
$ kill -QUIT 11752

これで実行できるようになりました!

まとめ

PIDについては深く調べていないので、今後ひと段落したら調べてみます。

しかしこれでたまに動かなくなっていたローカルサーバーの原因がわかったので良かったです。

ターミナルを閉じる時はきちんとサーバーを終了してからにしましょう(笑)

ちょいちょい引っかかってくるRails4.2とRails5の違い

Rails Tutorialを始めた頃、私は自分の使っているRailsが4.2なのを知らずに勉強を進めていました。 サーバーをPumaに変えるってあたりで初めて気づいたのですが・・・ そこで思い切ってRails5にアップグレードしました。 作ってる途中でこんなことするのはもちろん初めてだったので、後遺症がちょいちょい出て困ってます。

今回の概要

10章のbeforeフィルターのテストでNo route machesになった。

対処

beforeフィルターのテストをusers_controller_test.rbに書くのですが、

ここのclassがclass UsersControllerTest < ActionController::TestCaseのままだったせいで、

get edit_user_pathpatch user_pathがそんなルーティング設定されてないと怒られてしまいました。

ルーティングの方だということで確認したのですが、間違いなく設定はされていました。

    users GET    /users(.:format)          users#index
          POST   /users(.:format)          users#create
 new_user GET    /users/new(.:format)      users#new
edit_user GET    /users/:id/edit(.:format) users#edit
     user GET    /users/:id(.:format)      users#show
          PATCH  /users/:id(.:format)      users#update
          PUT    /users/:id(.:format)      users#update

          DELETE /users/:id(.:format)      users#destroy

全然わからなかったので、とりあえず教材のコードとめっちゃ見比べました。

コピペだから間違ってるはずないのに・・・と思いながら(笑)

そしてとうとうこの間違いに気づいたのですね!

classをclass UsersControllerTest < ActionDispatch::IntegrationTestに直したら無事成功! とはいかず・・・

今度はコントローラを作成した際に最初から書かれている

  test "should get new" do
    get :new
    assert_response :success
  end

が引っかかりました。

第5章まで遡って

get :newget signup_pathに変更。

なぜ私がこの部分を変えていなかったのかは不明ですが・・・

とりあえずこれでAll Greenになりました。

まとめ

何かをアップデートする際はきちんと仕様変更された部分を確認しましょう。

それ普通か・・・

ブログタイトル変更しました。

これまで「とりあえず発信しなきゃ!」とタイトルも考えずに始めたブログでした。

この度ブログ活用術のイベントに参加いたしましたので、タイトル変更とともに改めてプログラミングを勉強しているのはなぜか?何を目指しているのか?など「私」について書いておこうと思います。

目標

タイトルに書きましたが、アプリリリースが目標です。

そして自宅でお小遣い稼ぎがしたい!それが最終目標です!

今年の目標

直近で今年の初めに月単位で目標たてたので公開します。

『アプリを一つ作る』

  • 1月 Rails Tutorialを終わらせる
  • 2月
  • 3月 作るアプリと概要を決める
  • 4月 ペーパープロトタイプなどを作って細かい機能まで決める
  • 5月 コーディング開始
  • 6月 完成

2か月で完成するのかは・・・頑張ります(汗)

6月で終わってますが、その後は今後のポートフォリオのためにできるだけ多く作品を作っていきたいです。

現状

私は今プログラミングの勉強をしております。

より詳しくお話しするとRuby on Railsを勉強中です。

Rails Tutorialの9章が終わったところです。

Tutorial9.2 remember userを消し忘れてハマったお話。 - 主婦がアプリをリリースするまでの軌跡

ちょっと先週がっつりハマって時間無駄にしちゃいましたが、今日から第10章に入ります。

きっかけ

そもそも何でプログラミングに目をつけたかなんですが・・・

ちょっと恥ずかしいんですけど、子どもの頃から大好きなアメリカのSFドラマがありまして、現在のプログラミングは関係ないほど未来のお話なんですが・・・

それでももしかしたら彼らのようなものの考え方に少しでも近づけるんじゃないか?なんて思ったのがきっかけです。

そこから色々調べていくうちに、ちゃんとやれば仕事になるかも!と思って本格的に勉強を始めた次第です。

勉強履歴

これまでの勉強したことをざっくりあげさせていただきます。

どれも入門レベルですが、HTML、CSS、Bootstrapらへんは今も結構出てくるのでそんなに忘れてはいないと思います。

まとめ

まずは年内に一つアプリを作ってみることを今年の目標に、そしてブログ継続することを永遠の目標に掲げて頑張ってまいります!

エディタ再起動したらいきなりlocalhostに接続できなくなったお話。

これまで普通にrails slocalhostが使えてたんですけど、昨日一度エディタを閉じたらいきなり接続できなくなりました。

原因

多分以前Rails5にアップグレードしてデフォルトのサーバがpumaに変わったせいだと思います。 とりあえずRailsの勉強進めたかったので、今回はこれ以上詳しくは調べていませんが、いずれちゃんと理解できるようになろうと思います。

対処

$ rails s

で起動していたサーバーを、

$ rails s -b 0.0.0.0

で起動するようにしました。

こちらを参考にさせていただきました。

Rails 5.0 beta-2 で Puma のコンフィグを適用させたい - happy lie, happy life

Tutorial9.2 remember userを消し忘れてハマったお話。

Tutorialも9章の終わりまで来ました。 最後にチェックボックスを作ってログインを保持するかどうかの切り替え機能をつけるのですが、そこで凡ミスしてハマったお話です。

概要

  • チェックをつけずにブラウザを閉じてもログインが保持されている。
  • チェックの有無にかかわらず、remember_digestが生成されている。

原因

早い話が、createの中のremember userを消し忘れたのと、きちんとブラウザが閉じられていなかったのが原因でした。

チェックボックスをつける前の項で、ユーザーがログインしたことを記憶するためにcreateの中にremember user(ヘルパー)を書いてあったのですが、チェックボックスを実装するために書き換えたコードでは削除されています。 当たり前ですが、これがあると問答無用で記憶されてしまいますので・・・

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      params[:session][:remember_me] == '1' ? remember(user) : forget(user)
      remember user    #  <=これ
      redirect_to user
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

デバッグ情報見て問答無用でremember_digestが生成されていたので、絶対このせいだよな・・・とここで気づきました。 チュートリアルの文章中にはあえて削除するようには書かれていませんが、最終的なコードを見るとちゃんと消されてます。

で試しにコメントアウトしたところ、無事ちゃんと機能したようです。 しかしここでまたどうしようもない凡ミスが・・・

ブラウザがきちんと閉じられていなかったので何度消してもログイン状態が保たれてしまっていたのですね。 ×だけでなくきちんと「終了」をしましょう。って、そんな人いないか・・・

こんな感じで、2日も無駄にしましたとさ。めでたしめでたし。