アペフチ

Sendagaya.rb #133

Sendagaya.rb #133に行って来た。今日は、前半『メタプログラミングRuby 第2版』を読んで、後半はAction Cableを読んだ。

メタプログラミングRuby 第2版

fukajunさんが「本を読むってどうやってやるんですかねえ?」って言ったけど誰も答えを持ち合わせていなかった。十五分みんな黙読し、その後気になったことを話すというスタイルになった。範囲は「2章 月曜日:オブジェクトモデル」の始めから「2.2.4 オブジェクトとクラスのまとめ」まで。みんなRubyを書けるので特に問題がなく、字が汚いとか

module Rake
  class Task
    # ...

class Rake::Task
  # ...

って書いたらHoundCIに怒られるんだけどなんでだろう? といったことを話していた。

次回は「2.2.5 ネームスペースを使う」から。毎週ちょっとずつは読むとのこと。

また、ここのところ本にシンタックスハイライトを入れるのをやっていたので、この本も帰ったらやろうと思っていたが、始めからハイライトされていた。 『メタプログラミングRuby 第2版』は始めからシンタックスハイライトされている

Action Cable

ApplicationCable::Channelのユーザー定義のメソッドのスタックトレースを遡って、どこから呼ばれるのかを見ていった。

fukajunさんがプロジェクターで映しながらエディターを開いてソースを追い掛け、みんなで横からああだこおだと言っていた。読んだのはだいたいこの辺。

一度CelluloidをやめてConcurrent Rubyにしたところ(3b7ccad)、それを巻き戻し(d0393fc)、更にまた巻き戻す(01c3200)ということをしていて、この辺の扱い大変なんだなあという話をした。使いたいのはCelluloidの方であるようだ(#22977)。

ここを読んだおかげで、Rails5.0.0-beta1のActionCableを使って超簡易チャットを実装してみたにある

class MessagesController < ApplicationController
  def create
    ActionCable.server.broadcast "messages",
      message: params[:message][:body],
      username: cookies.signed[:username]

    head :ok
  end
end

みたいなコードを見ても驚かずに「なるほどActionCable.server.broadcastに渡している"messages"コマンドは別スレッドで実行されるからここはブロックせずに、即座にブラウザーに応答することができるんだな」と考えることができるようになった(でも、僕は気にならないけど、コントローラー内でこういうことするのに違和感を覚える人もいた)。

electron、rails-assets、JavaScript生態系

なんかelectronが盛り上がってるらしく、夕食を頂きながら仕組みとかHTMLで作るのどうなの? とか、rails-assetsとか派生してJavaScriptの開発環境って今どんな感じなの? といった話をした。