ruby

データ駆動 + Test::Unit

大量のログデータの処理の前段階として、fluentプラグインで処理させるときのこと。 fluentプラグインのテストはTest::Unitで書くのが主流なようで、Test::Unitを書いている。 ただ、プラグインは大量のデータを処理するので、テストケースの量も多くなって…

コードレビューするときの視点

普段、Ruby(RailsやSinatraといったWAFにおける)のコードレビューするときに、 こういった事を念頭においてレビューする、というものが自分の中だけで閉じている気がしているので、 文章にしてリスト化しておくことでコードレビュー時に、自分自身も漏れが少…

Rubyの標準ライブラリ及びgemのtagsファイルをロードする

Vimスクリプトを書いた。 https://github.com/yoppi/config/blob/master/vim/dot.vim/ftplugin/ruby/tag.vim プログラミングしているときに、実装を知りたいときがよくあるので、Vimで素早くタグジャンプできるようにした。 ただ、 手動でtagsファイルを生成…

redisable

というgemを作った。 http://github.com/yoppi/redisable RubyオブジェクトをRedisとマッピングさせる既存の有名なライブラリに、 redis-objects(https://github.com/nateware/redis-objects) ohm(https://github.com/soveran/ohm) の2つがあるけど、次の欲…

RSpecMocks/rr

TestDoubleライブラリをrr(Double Ruby)からRSpec標準のRSpecMocksに切り替えてるのだけど、やっぱり違和感がある。 rrはTestDoubleの考えをそのままライブラリ化した実装で、xUnit Test Patternsを熟読した人にとって馴染み易いと思う。 だけど、RSpec Mock…

Enumerable#entries

にはまったというお話。 class Hash def method_missing(method, *args) ret = self[method] || self[method.to_s] return ret if ret super end end h = {root: {hoge: 1, foo: 2}, entries: [{hoge: 3, foo: 4}, {hoge: 5, foo: 6}]} h.entries #=> [[root…

RubyやRailsの情報収集

勉強会で話していて3回くらい「どこからRubyやRailsの情報を仕入れてますか」のような質問をされたので、 自分はどうやって情報収集してるんだろうとふと考えてみると、 Rails Casts(pro購読するのおすすめ) http://railscasts.com/ Ruby Weekly(メールで定…

Ruby 2.0.0-p0

__dir__は地味に嬉しい。今までどうしてたかというと、File.dirname(File.expand_path(__FILE__)のように書いてた defaultがUTF-8になったので、マジックコメント書かなくて良いのほんと助かる... いわずもがなな Enumerable#lazy refinementはこれからな感…

rmagickが特定の環境だとImageMagick6.8.0-10でビルドできない

自宅のMacOS X Lionだと、最新のImageMagickとlibtiffの組み合わせでrmagickをビルドできない問題に遭遇しました。 $ brew install imagemagick $ gem install rmagick ... imagemagickを6.7.1-1に、libtiffも3.9.5に落とすとビルドできます。 $ brew unlink…

Redisを使うSessionStoreライブラリ書いた

Redis使いたかったというのもあるけど、memcachedより性能が良いの(http://antirez.com/post/redis-memcached-benchmark.html/)でその試験というのも兼ねて。https://github.com/yoppi/redis-session-storeすでに他の人が書いてたのだけど、Rails3で動かなか…

アンダースコアを変数名に使うことについて

同僚がアンダースコアを変数名として使って、他の人に直されてコミットログで指摘されたと愚痴をこぼしていたので、他の人はどうだろうとふと思った。 僕がRuby語を書いてる時、変数名にアンダースコアを使うときは Hash等、Enumerableなものでブロック内で…

jeweler + gitflowでrubygemsの開発を快適に

gemを開発しているとrubygemsに登録したりと何かと細かい作業が発生するのでjewelerに任せているのですが、最近gitflowを使って開発していることから、その作業の流れを紹介します。bugfixやfeaturesの開発はgitflowに任せて開発します。僕は基本的にgithub…

The Mega March 2012 Ruby and Rails News and Release Roundup のメモ

以前は頻繁に更新があったRuby Insideですが最近めっきり更新されてなくて、収束しちゃうんじゃないかと心配していました。先日久しぶりの更新があり、3月のRuby界、Rails界についてのまとめ記事があがってたので、気になった記事をメモしています。 トップ…

RSpecで終了ステータスをテストする

RSpecでアプリケーションの終了ステータスをテストしたい時があります。Rubyアプリケーションで、exit(Kernel::exit, Process::exit)が呼ばれるとSystemExit例外が発生します。riからexitの挙動のコードを抜粋すると、 begin exit puts "never get here" res…

lambda の代わりに expect を使う

RSpecでたとえば例外のテストコードを書くとして、 it "should raise CommandError in unknown command" do lambda { LocalPort.command.find("foo") }.should raise_error( LocalPort::CommandError, "foo" ) end このlambda {...}.shouldは読み手からした…

Seleniumの自動テストをCI環境(Jenkins)で快適に実施する

Ruby Advent Calendar 2011 16日目の記事です。 Webアプリの画面テストにはやはりその利便性からSeleniumを使うことが多いだろう。 ちょっとした変更でも問題ないと高をくくっていても、リリース後にリンクやボタンをクリックした途端に500や404が発生した日…

PryをRailsコンソールで使うには

Pryという新しいREPLツールがとっても便利だ。 詳しい使い方は、Wikiを読めばだいたいわかる。 Railsコンソールでもこの便利なPryを使うには、Using Pry instead of IRB for Rails' consoleで紹介されているように、config/initializers/pry.rbに次のよう に…

fastthreadがthread.rbよりどれだけ高速なのか

最近MacBookにPassengerの環境を作ろうとして、gem経由でインストールするとfastthreadというgemがインストールされたので、気になったのでなんだろうとコードを読んでみた。 どうやら標準添付ライブラリ(thread.rb)で提供されているQueueやSizedQueueをその…

ruby-msyql 2.9.4を使用しているとprotocol errorが発生する

今のプロジェクトでは、データベースのmigrateツールを自作しており、MySQLとのインタフェースにはruby-mysqlを使用している。 しかし、最近、migrateツールを起動すると途中でprotocol errorが発生するようになった。 追いかけていくと、特定のSQL文を発行…

RMagickで日本語を描画する(Mac)

RMagickはImageMagickをRubyから触るためのbindingです.すこし触ってみて,日本語の描画がなかなか盲点だったのでメモとして残しておきます. RMagickのインストール ImageMagickを先にインストールします.MacPortsを使えば, % sudo port install imagema…

Rubyのresolv.rbに対するVulnerability Note

resolv.rbのDNSスプーフィング脆弱性 - Rubyに複数の惰弱性 Rubyのresolv.rbにKaminsky Flawの影響があるそうです.Kaminsky Flawって何それおいしいの?という人はAn Illustrated Guide to the Kaminsky DNS Vulnerabilityを読んでみてください.非常にわか…

第28回Ruby/Rails勉強会@関西に参加しました 

エラトステネス 素数のルックアップテーブル版です.まったくRubyぽくないソースだ. erato.rb@github > ruby erato.rb true 0.860000 0.400000 1.260000 ( 1.255251) user system total real git! git! ギットギトにされてるのです.gitかわいいよgit. git…

集合知プログラミング

集合知プログラミング作者: Toby Segaran,當山仁健,鴨澤眞夫出版社/メーカー: オライリージャパン発売日: 2008/07/25メディア: 大型本購入: 80人 クリック: 2,024回この商品を含むブログ (263件) を見る 売り切れ必死かと思いきや,運良く梅田のジュンク堂に…

rb-rubygemsやrb-mecabをMacPortsからインストールできない

rb-rubygemsをMacPortsからインストールすると以下のエラーがでてインストールできない.これは困った. % sudo port install rb-rubygems Password: ---> Configuring rb-rubygems ---> Building rb-rubygems with target setup ---> Staging rb-rubygems i…