Ruby Weekly #378: 日本語サマリー
職場の Slack の #ruby 窓で Ruby Weekly メルマガが毎週配信されます。その中から面白そうなものをピックアップして、日本語で簡単なサマリーを書くようにしています。そのサマリーをここでまとまさせていただきます。くだけた日本語で失礼いたします。
Highlights
malloc のせいで Sidekiq プロセスが 1 GB にまで膨れ上がっちゃう問題。メモリのフラグメンテーションを起してるらしい。解決案は
ブロックの中でもブロック外変数を読み書きできるようにしてくれる binding
の解説。
筆者が class << self
でのクラスメソッド定義を好む理由。
- シングルトンクラスのスコープ内での定義だから。
def self.method
はスコープ外からの定義。 private
protected
領域が使える。def self.method
はprivate_class_method
しかない。
News
RubyMine 2017.3 リリース。
- パフォーマンス向上
- 外部キーワードに飛べるようになった
- Code Insight 改善
- ネストしたプロジェクトへのサポート改善
- WSL(Windows 上 Bash)対応
- メソッド抽出の
private
public
protected
指定可能 - エディター内
rubocop --auto-correct
- Puppet テンプレート同梱
- API テスト用エディター内 REST クライアント
- JavaScript、CSS、Vue.js コード補完改善
git rebase -i
- SQL 生成ツール
99 Bottles of OOP 本は来週まで 40% 割引!
Julia Evans Taking a Sabbatical to Work on Ruby Profiling Tools
Unix を題にした zine で有名な Julia Evans が Ruby プロファイリングツール開発のため 3 ヶ月休職。
Tutorial
- parser gem で Ruby コードを AST に変換。
- REXML または nokogiri で AST を XML に変換。AST 内オブジェクト ID を XML タグの属性として書き込む。
- XPath で書き換えたいコードを指定し、該当タグのオブジェクト ID で該当 AST ノードを取得。
- AST ノードを買い換える。
proc
・lambda
・ブロックいろいろ。
proc
・lambda
内return
の挙動proc
・lambda
引数の数チェック&
演算子でブロックをproc
に変換
Builder gem + Tilt で XML テンプレートエンジンを実装した話。
Rails アプリの elasticsearch 検索機能実装手順。elasticsearch 内インデックスは Kibana で確認。
Heroku 上での稼働中 Rails アプリのデプロイ時に、ワーカープロセスをグレースフルに切り替えるための Procfile 設定。
Opinion
細胞の再生のように、メソッドを小さいコンポーネント(純粋関数)として書き、変更が必要になったら修正ではなく一から書き直せば、長生きするシステムが生まれるのでは、と提案した Chad Fowler 先生の RubyConf 2017 トーク。このルールを守った開発は
- 再利用性にどんな影響を与える?
- 複雑さにどんな影響を与える?
- テストにどんな影響を与える?
- 命名にどんな影響を与える?
といった疑問を述べた記事。(答えは出してなく、あくまで質問を挙げているだけ)
半年前に Ruby を教えるのをやめた Coding Dojo で騒ぎになった Ruby コミュニティ。その一方で Ruby を教え続けている Flatiron School。学校にとって一番大事なのは、卒業生の雇用先の需要ではなく、いかに学生がプログラミングのことを好きにさせること。Ruby がそれに最適だと。
Code
Passwordless: Add Password-Free Authentication to a Rails App
メール本文内リンクでのログイン用 gem。
rack-contrib 2.0: Now Supports (Only) Rack 2.x and Ruby 2.2+
rack-contrib 2.0.0 リリース。
- Rack 1.x サポート終了
- Ruby 2.1 以前サポート終了