EdgeRails

#railstokyo @東京第78回 EdgeRails
posted at 16:31:48

#railstokyo @東京第78回 EdgeRails Rails4 そろそろ〜、結構固まってきてるし
posted at 16:32:34

#railstokyo @東京第78回 EdgeRails before_action
posted at 16:33:03

#railstokyo @東京第78回 EdgeRails Ruby2.0 の話とか
posted at 16:40:39

#railstokyo @東京第78回 EdgeRails Remove ActiveRecord::Model https://t.co/Vzk4zJfY
posted at 16:47:11

EdgeRails.info

#railstokyo @東京第78回 http://t.co/Ouf3K2oL
posted at 17:18:46

roundabout

GitHub - amatsuda/roundabout: A Rails Engine that generates a page transition diagram for your Rails app from request specs

#railstokyo @東京第78回 休み時間に関係ない話
posted at 16:03:45

#railstokyo @東京第78回 休み時間に。 roundabout ジェム
posted at 16:07:50

#railstokyo @東京第78回 休み時間に。 roundabout ジェム 画面遷移図(アクション遷移図)
posted at 16:30:26

RSpec のリクエストスペックのシナリオを見て(rspec実行後)、画面(アクション)遷移図を描く。
依存性とかいろいろ、ライブコーディング楽しい。

deco_modelについて

#railstokyo @東京第78回 deco_modelについて https://t.co/1MuQM3LG
posted at 13:49:51

自分の作ってみたジェムなんだけど見て下さい、的な。

#railstokyo @東京第78回 deco_modelについて Railsのヘルパーでは物足らず、Decoratorパターンでいきたい
posted at 13:51:21

#railstokyo @東京第78回 deco_modelについて いろいろ楽しい
posted at 14:34:15

コード見ながらいろいろ話す。

#railstokyo @東京第78回 deco_modelについて 名前ちょっと DecoModel DecoData RDecorator RightDecorator LightDecorator
posted at 14:40:58

そしてプロジェクト名みんなで考える。

#railstokyo @東京第78回 deco_modelについて 名前ちょっと RDecorator
posted at 14:41:17

Rails勉強会@東京第78回、出席

Rails' Wiki - Rails勉強会@東京第78回、この項翌日(/16)に書いています。
自分Twitterからの追録です(順序調整あり得ます)。

Rails勉強会@東京第78回 #railstokyo
posted at 13:09:03

#railstokyo 自己紹介タイム
posted at 13:12:16

#railstokyo @東京第78回 deco_modelについて、cellluloid、EdgeRails
posted at 13:33:30

#railstokyo @東京第78回 13:45-14:45 deco_modelについて、15:00-16:00 cellluloid、16:15-17:15 EdgeRails
posted at 13:34:17

#railstokyo @東京第78回 cellluloid http://t.co/daAvNDGP
posted at 13:43:38

メールで Twitter、「Sorry, that page does not exist」対策 (API の URL)

なんとか使っているメールで Twitterメールで Twitter、OAuth (続き) - Rubyとか Illustratorとか SFとか折紙とかメールで Twitter、OAuth - Rubyとか Illustratorとか SFとか折紙とかメールで Twitter、「Timestamp out of bounds」対策 - Rubyとか Illustratorとか SFとか折紙とか だが、ある日ふと「{"errors":[{"message":"Sorry, that page does not exist","code":34}]}」といって Net::HTTPNotFound となるようになった。https://dev.twitter.com/docs/error-codes-responses によると HTTP 404 not found 相当だとか(まさに同例もある)。

https 接続にはしてるし、OAuth 対応もしたし、データ形式ももともと json取るようにしてるしなあ、どうなってるんだろう。

といって APIマニュアル https://dev.twitter.com/docs/api/1/get/statuses/user_timeline https://dev.twitter.com/docs/api/1/post/statuses/update 見てて漸く気が付いた、API の URL が変わっている。
というわけで

      consumer = OAuth::Consumer.new <コンシューマキー>, <コンシューマシークレット>, :site => 'https://api.twitter.com'

('https://api.twitter.com' <- 'https://twitter.com')サブドメイン api がついて

    Path = '/1/statuses/'

('/1/statuses/' <- '/statuses/') APIバージョン 1 も。

ElastiCache でのアイテムサイズ

Amazon ElastiCache (インメモリキャッシュ管理・操作サービス) | AWSAWSの提供する memcached 。マネジメントコンソールからポチポチしてるだけで適当に動き出す、設定条件とかあんまり意識しなくても良い。使う EC2側のセキュリティグループの設定とかあるけど。
で、細かい設定を調整しようとしたときに、どうしたら良いか探してマネジメントコンソールをさまよう事になる。(これは僕がある程度マネジメントコンソールが非力じゃなくなってからの AWSユーザだからで、それ以前からやってるような強者はコマンドライン見に行ったり API叩きに行くのかもしれない)。

max_item_size のデフォルトは 1048576 bytes (概ね 1M)。これを増やしたかった。それには Cache Parameter Groups を経由して調整することになる、デフォルトで適用されるグループ「default.memcached1.4」では値をいじれないの注意。新しく作って値を調整、その後そのパラメータグループでキャッシュクラスターを作る。或いはキャッシュクラスターの一覧から Modify のリンクを辿るとパラメータグループの割付も変更できる。max_item_size の場合、その後 Reboot が必要になるんでその辺も。(勿論キャッシュはクリアされる)

キーとか値とか

そんな ElastiCache で、実際に格納されているキーと値を見たかったり。まあなんかクライアント使うか、telnet で見に行けば良いんだけど。

#!/usr/local/bin/ruby
# coding: utf-8
require 'net/telnet'

sess_save = `php -r "echo ini_get('session.save_path');"`
OptsECache = {
  'Host'       => sess_save,
  'Port'       => 11211,
  'Telnetmode' => false,
  'Prompt'     => /^END\n/,
}
ecache = Net::Telnet.new OptsECache
begin # ensure
  if ARGV.size <= 0 then
    ecache.cmd('stats items') \
    .each_line.select{|l| /number/ =~ l} \
    .map{|l| /items:(\d+):number (\d+)/.match(l).values_at(1, 2)} \
    .map do |slab_no, limit|
      ecache.cmd("stats cachedump #{slab_no} #{limit}") \
      .each_line.reject{|l| /END/ =~ l}
    end.flatten.join.display
  else # if ARGV.size <= 0
    ARGV.map{ |key| ecache.cmd "get #{key}" }.join.display
  end # if ARGV.size <= 0
ensure
  ecache.close
end # ensure

そもそも PHP のセッション情報を memcachedストアにしたかったので ElastiCache を使おうとしてるので、PHP自身に ElastiCacheサービスの場所(ノードのエンドポイントの URL)を訊きに行く。引数無しだとキー情報の一覧、引数にキーを渡すと値を返す。