ターミナルをiTermにし、シェルをBashからZshにして快適

MacOSのターミナルの標準シェルはBashだけど、Gitを使うのであればZsh、あるいはfishを使うと快適だと思う。そしてターミナルもiTermが良いと思う。

それに伴いUNIXコマンドの勉強になる(かもしれない)

Continue reading “ターミナルをiTermにし、シェルをBashからZshにして快適”

みんな大好きマスタリングTCP/IP 入門編 第5版を読んでいます

定番中の定番。インターネットがどうやって動いてるかを理論的に説明してる本です。

Continue reading “みんな大好きマスタリングTCP/IP 入門編 第5版を読んでいます”

herokuにデプロイしたら404が返ってきた

アプリケーションのログを見てみる。statusは502となってる

buildのログを見る.検証の結果、bundlerは多分関係ない。

https://teratail.com/questions/164431

teratailにも投げてみた。

Continue reading “herokuにデプロイしたら404が返ってきた”

ActionCableでチャット機能をつくる

Rails5のActionCableという便利な機能を用いてLINE的なチャットアプリを作ってました。

苦労したことは

  • enter押しても画面に表示されずコンソールでエラー起きる
  • enterしてもメッセージが表示されずdatabaseに保存されていない

enterでメッセージ送れるようにするにはjQueryの読み込みを追加で行う必要があります。

Gemfileにgem 'jquery-rails'を記述しbundle updateを行う

aaplication.jsに移動し

//= require jquery
//= require jquery-ujs

を追加するとok。

メッセージが表示されない問題はサーバークライアントの連携の処理に問題がありました。

具体的にいうと

クライアントサイドのspeakアクションを定義、そのアクションでサーバー側のspeakアクションを呼び、messageをmessageというパラメーターとして渡す処理が上手くいってなかったのです。このmessageパラメーターをdataとして受け取りmessageにブロードキャスト、ブロードキャストは非同期通信のためにjobファイルに移動、viewにmessageを渡してからmessageモデルをいじる。tableにdataが保存されたらMessageBroadcastのperformアクションを実行、そしてroom_channel.rbで定義したspeakアクションから送信されるdata、selfを利用してmessageモデルとして渡す。最後にクライアント側でのreceiveの処理を変更してviewにappendする(オタク特有の早口)

room.coffeeでクライアントの処理を書き、roomやjobファイルでrailsのサーバー処理を書きブラウザで動かしログ追ってみるとサーバークライアントの仕組みを直感的に理解することができるなーという感想です。

RailsとMySQL2の連携

久しぶりにRails書いてる、というか厳密にいうと『書いてる』というより『読んで』『作業してる』っていう感じです。

RailsってデータベースにMysql使うのでgem install mysql2しなければいけないわけですが、結構なのです。

Qiitaに書いておきました。

Rails x Mysql2 gem install 沼脱出法

簡潔にいうと

$bundle install通すとgem install mysql2しろ!ってエラーが出るのでその通りにやる。けどエラーがでる。その対処法です。

大きく二つあります。
一つはxcode-select --installを通す。もう一つがbundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"を通す。

これら通して再びbundle install実行するとokです。