読者です 読者をやめる 読者になる 読者になる

Memento memo.

Today I Learned.

Ruby: Hash -> Structの変換

こんな感じで書けます def deep_struct(hash) foo = hash.values.map do |v| case v when Hash deep_struct(v) when Array v.map { |x| deep_struct(x) } else v end end Struct.new(*hash.keys).new(*foo) end OOPっぽく書きたければHash, Arrayに deep_str…

gemを作ってrubygems.orgでリリースする

作ったもの github.com slash-force というかっこいい名前のgemを書きました。 Railsで特定のURLへとアクセスしたときに末尾にスラッシュを付けて強制的にリダイレクトさせるだけのプラグインです。 こんな感じでgemをリリースできました。 slash_force | Ru…

Rubyのobject_idからobjectを取得する

備忘録です [1] pry(main)> hoge = "foo" => "foo" [2] pry(main)> hoge.object_id => 70163083352460 [3] pry(main)> ObjectSpace._id2ref(70163083352460) => "foo" yeah!

Concurrent Rubyで並行処理プログラミング

Rubyで並行処理を書きたかったのですが、自前でスレッドセーフなプログラムを書ける気がしないのでgemを探して来ました。 Concurrent Ruby github.com Be an 'unopinionated' toolbox that provides useful utilities without debating which is better or w…

Gemfileとpackage.jsonでみるバージョン指定の読み方

Semantic Versioning 2.0.0 セマンティック・バージョニング(SemVer)によると バージョンナンバーは、メジャー.マイナー.パッチとし、バージョンを上げるには、 APIの変更に互換性のない場合はメジャーバージョンを、 後方互換性があり機能性を追加した場…

Effective Ruby 第六章まとめ テスティング

Effective Ruby 第五章 メタプログラミング まとめ その2 - Memento memo. の続き。 Effective Rubyのテスティング章をまとめていきます。 MiniTestはRuby標準のテスティングライブラリで、 主要なコンポーネントは以下の3つです。 ユニットテスト スペック…

GitHubのリポジトリを直接指定してgemをinstallする

自作gemとかOSSのgemのリポジトリとかブランチとかを指定して使いたい場合の解決策です。 リポジトリの .gemspec ファイル等は設定済み前提で。 Gemfile使う方法とGemfile使わない方法の2通りあります。 Gemfileを使う場合 普通に指定できます。以下のように…

Effective Ruby 第五章 メタプログラミング まとめ その2

Effective Ruby 第五章 メタプログラミング まとめ その1 - Memento memo. の続きです。 モンキーパッチの代わりとなるものを検討する モンキーパッチとは モンキーパッチとは、実行時にコアクラスを拡張したり挙動を書き換える(パッチを当てる)こと。Acti…

Ruby2.3系での"Missing frozen string literal comment"への対処

Missing frozen string literal comment Ruby2.3系でRubocopを実行したら Missing frozen string literal comment と怒られました。 ファイルの先頭に以下のmagic commentが必要とのこと。 # frozen_string_literal: true これによってRubyのStringリテラル…

Effective Ruby 第五章 メタプログラミング まとめ その1

Effective Ruby 第四章 例外 まとめ - Memento memo. の続きです。 第五章 メタプログラミングについての前半部です。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (4件) を見る モ…

VegetaでPhoenixとRailsの負荷テスト

以前会社の同期とご飯を食べていた時、 HTTP負荷テストツールのVegetaというものを紹介してもらったので試してみました。 github.com GitHubのプロジェクトページを開くとイカしたサイヤ人の王子が目に飛び込んできます。 Golang製ツールで、CLIで比較的簡単…

Effective Ruby 第四章 例外 まとめ

Effective Ruby 第三章 コレクション まとめ - Memento memo. の続きです。 今回はRubyの例外についてです。 例外は、以下の2つの異なる言語機能をまとめたものだと考えられます。 エラーの説明 制御フロー raiseにはただの文字列ではなくカスタム例外を渡す…

Effective Ruby 第三章 コレクション まとめ

Effective Ruby 第二章まとめ その2 - Memento memo. の続きです。 第三章はコレクションです。コレクションをうまく扱えるかどうかはコードの可読性・保守性にダイレクトに効いてくる気がするので、言語ごとのクセを把握しておきたいです。 Effective Ruby…

Effective Ruby 第二章 クラス、オブジェクト、モジュール まとめ その2

Effective Ruby 第二章まとめ その1 - Memento memo. の続きです。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (3件) を見る 構造化データにはHashではなくStructを使う 新しいク…

Effective Ruby 第二章 クラス、オブジェクト、モジュール まとめ その1

いつぞやの続きです。 shotat.hateblo.jp Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (3件) を見る 一記事一章にまとめようとしたところ二章目から量が多くて詰んだので適当なとこ…

Effective Ruby 第一章まとめ

最近仕事でJava、趣味でElixirを書いてるのですが、来週くらいから仕事でRuby書くっぽいのでRubyの復習を始めつつブログのネタにします。というわけでEffective Rubyを読み始めました。初見です。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社…