たごもりすメモ

コードとかその他の話とか。

ruby

実行中のRubyプログラム中で自分自身を動かしているrubyのパスを取得する

何が嬉しいんだそれって言われると、うーん、rbenv/rvmなんかの影響を無理矢理外すために環境変数とかをいじった上で自分自身を起動しなおしたかったからんだけど、あっやめて石を投げないで、そんなマイナーケース知るかって、あっ、 RbConfig モジュール …

Ruby 2.1.0-preview2 で #fluentd (というかmsgpack)は動きません

このチケット(既にclosed)の関連なんだけど。http://bugs.ruby-lang.org/issues/9106Ruby 2.1.0-preview2 で gem install msgpack すると、ビルド&インストールされたgemのディレクトリにおいて lib 以下にビルド済みバイナリファイル(*.so や *.bundle)が…

るりまにpullreqを送る方法、1から10のはなし

Rubyを書いている人ならきっと一度以上はお世話になっているRubyリファレンスマニュアル、通称「るりま」。 これが前まではsvnでリポジトリ管理+修正はredmineでチケットを切って依頼、みたいなすげーダルいフローでなんか見付けても依頼が面倒で面倒で面倒…

jrubyでさくさくrspecを実行する(Nailgun or spork)

JRubyでコード書いてるとrspecを起動するたびに永遠にも等しい待ち時間が苦痛で苦痛で苦痛で。素のrspecで5.6秒、rspecを実行するようにRakefileを書いた rake test で9.4秒、bundle exec rake test に至っては19.7秒という永遠にも等しい時間を必要とする。…

gemspecにおける依存gem記述上の注意

要約 gemspecにおいて add_development_dependency と add_runtime_dependency (or add_dependency) の両方に同じgemがセットされたものをリリースすると、そのgemを bundler 経由でインストールしたとき正常に依存gemがインストールされなくなる。これはお…

大江戸Ruby会議03いってきた

いやー、いいイベントでしたね。Asakusa.rbのみなさま、たいへん良い日をありがとうございました。Oedo Rubykaigi 03 - Mar 16, 2013コードの話、コードを書くことについての話、がすごく多くてすばらしかった。体調的には鼻炎薬が強烈に働いてて超眠くて集…

Fluentd w/ Ruby 2.0.0-p0 のメモリ使用量 (追記: w/ msgpack v0.5.4)

いくつかFluentdのベンチマークをとらないとなー、そういえばRuby 2.0.0-p0も出ましたね、ということでベンチマーク取ろうと思ってあれこれ作業してたらなんか変なのを見付けたのでとりあえず記録。 なおベンチマークの結果については、いろいろ取りかたを考…

mysql2-cs-bind released!

前に RubyでMySQLに繋ぐためのruby-mysqlとmysql2 - tagomorisのメモ置き場 というエントリで書いたとおり、いまおそらく最もよく使われそうな mysql2 という ruby用のmysqlドライバにはprepared statementを扱うためのAPIがない。MySQLではprepared stateme…

ruby 1.9.3 における Hash#to_json および Array#to_json のAPI仕様変更について

もしかして今も世界のどこかでハマっている誰かのためにメモ。Ruby 1.9.3 に添付されている json モジュールはAPI仕様が変更されており 1.9.2 までで使えていた2引数呼び出しが使えなくなっている(エラーになる)。まず 1.9.2。 1.9.2p290 :001 > require 'js…

RubyでMySQLに繋ぐためのruby-mysqlとmysql2

このエントリは MySQL Casual Advent Calendar 2011 - MySQL Casual の10日目の記事です。こんばんは。tagomorisです。さとしです。タゴモリスの s はさとしの s です(実話)。Twitterで #さとし というハッシュタグが流れるたび、ひそかにびくっとしてます。…

rubyで関数合成を適当に

評価関数を扱うコードを書いたりしてると関数合成は割とやりたいことがあって、でも細かいことを考えないといけなかったりでめんどいなーとスルーすることが多いんだけど、このエントリを今日見て刺激を受けた。 Groovy 1.8 のクロージャ合成 - A Memorandum…

PassengerMonitor: Rack Middleware returns status like mod_status

Phusion Passenger has 'passenger-status', shows passenger's process status and other information. But, for continuous monitoring, we want to monitor passenger's status over network. Apache httpd has 'mod_status'. Now, I wrote Rack middlewa…

mod_status互換ちっくにPassenger動作状態を見るための PassengerMonitor を作った

Passengerを使っていると端末から passenger-status と入力することで無駄に色付きの動作状態が表示されてウヒョーPassengerいたれりつくせりで便利だなー! とか思うものの30秒後にはいちいちサーバにログインしてコマンドを入力しないといけないことに我慢…

追記型O/R Mapper "Stratum" を公開した(公開しただけ)

仕事で作っているアプリ用に書いたO/Rマッパのライブラリ、隠してても何の嬉しいこともないので、社内に置いてたgitのリポジトリをgithubに移した。さすがにもう機能追加の必要もなくなってきたなーという段階になったので。https://github.com/tagomoris/St…

Sinatra1.1.0の変更点を翻訳してみる

Sinatra 1.1.0 がリリースされました。 sinatra/CHANGES at 1.1.0 · sinatra/sinatra · GitHub手元のコードをSinatra 1.1対応しようと思ってCHANGESを眺めて、簡単に翻訳してみようかなと思った。のでだらだら。いいかげん訳なのであんまり本気で信じないで…

andとorの優先順位についてハマる

うっかり以下のようなコードを書いた。意図は x が nil か、もしくは配列だけどサイズ 0 である場合を調べたかった。 if not x or x_is_list and x.size < 1 ... end 元はちょっと違うコードで、リファクタリングついでに上のようなコードに書き直して鼻歌ま…

Ruby 1.9.2p0 で requireとrequire_relativeについて調べてみた

先日のこのエントリの続き。 http://d.hatena.ne.jp/tagomoris/20100924/1285322426Ruby内部のコードを追っかけるのは時間かかるのでとりあえず置いておいて、1.9.2になってLOAD_PATHの仕様変更(カレントディレクトリが除外された)にともなって動作が変わっ…

require_relativeはeval内で必ずLoadErrorになる on Ruby1.9.2

いま書いてるアプリをちゃんとrackupできるようにしよう、とあれこれやっていてハマったうちのひとつ。(他にも多数……というより、まだPassengerでちゃんと動いてない orz)Sinatraアプリケーションをrackupするための config.ru を書くときに、世の中の解説を…

あれこれやってたらrakeの実行が失敗するようになった

OSXに入ってたruby 1.8.7を残しつつ1.9.2p0を使いたいなーとか両立させてたんだけど、Passengerとかがいい感じに混乱するようなので1.9オンリーに変えてしまおう。と思い立ったはいいが、あれこれいじってたらrakeがこんなエラーを出して動かなくなった。 dh…

俺が本当のsassの書き方を教えてやる

タイトルはDMCからいただきました。 あとガチで巨大なものとか書きません。普通のCSSとか書くのはめんどいからインデント記法とか色計算とかでラクがしたいよねーという程度の人向けですよ。 sassってなんだっけ sassでググると2008年とか2009年の記事があれ…

ruby 1.9.2 + rspec 1.3.0 でPendingにしたいのに例外になる

赤くなって悲しい。ここにパッチがある。 RSpec 1.3.0は今年の1月リリースで、上述スレッドは3月の話。悲しい。 パッチ当てたら直りました。……実は誰も今時RSpec使ってないのかな。もしくはみんな開発版? そんなばかな。

手元のコードをruby1.9対応した

仕事で書いているRubyのコード、1.8.7で書いてたのを1.9.2p0に持っていったので、やった変更内容のメモ。 なお書いてるのはO/R Mapper(とそのテスト)なので、Web系のあれこれとかセキュリティ回りとかのことは知りません。環境はMac OSX 10.6.4 (Snow Leopar…