2010-01-01から1年間の記事一覧

yard_ast_editable ってのを作ってみた

Rubyのシンタックスをパースして、構文木をいじってソースコードを編集するために作ってみました。 https://github.com/akm/yard_ast_editableYARD::Parser::Ruby::RubyParserが良さげだったので、YARD::Parser::Ruby::AstNodeを拡張して、find_by_ident と …

Ripper

http://ujihisa.blogspot.com/2009/07/parsers-around-ruby.html の記事の最後にあったので、あんまり期待してないで調べはじめたら、これgemとかじゃなくて、1.9系からの標準添付ライブラリなのね。ちょっとテンション高めで使ってみたらいけました!コメン…

parse_tree

ruby-1.9.2では動かなかったので、1.8.7で。やっぱりコメント取れなかった。 require 'parse_tree' #=> true sexp_array = ParseTree.translate("1+1") #=> [:call, [:lit, 1], :+, [:array, [:lit, 1]]] lines = <<EOS # AAAAAA def foo(*args) puts args.inspect end EOS #=> " # AAAAAA\n def foo(*args)\n puts args</eos>…

ruby_parser

rubynodeは古かった。探してみたら、まとめサイト発見。 http://ujihisa.blogspot.com/2009/07/parsers-around-ruby.htmlruby_parserというまんまな名前のものが見つかった。 http://parsetree.rubyforge.org/ruby_parser/ruby-1.9.2で試してみた。 require …

rubynode

rubyの構文、特にコメントを解析したくなってrubynodeというgemを見つけました。最後のメンテが2年前だけど。 http://rubynode.rubyforge.org/ruby-1.8.6-p399で確認しました。 require "rubynode" #=> false code = <<EOS #aaaaaaaaaa # bbbbbb def foo puts "AAA" end def bar(*args) puts args.inspect end EOS #=> " #aaaaaaaaaa\n # bbbbbb\n def foo\</eos>…

ShoppyBag押しちゃった

酔っぱらってたのもあって、知り合いの名前で来てたメールのボタン押しちゃいました。関係者のみなさん、もしメールが行っちゃっても、ShoppyBagのメールはスルーしてください。 RT拡散希望Gmailユーザーは「ShoppyBag」メールを開かないでのまとめ。 http:/…

ruby1.9系今日のハマりポイント

RUBY_VERSION #=> "1.8.7" (0..7).map{|i| '%03b' % i} #=> ["000", "001", "010", "011", "100", "101", "110", "111"] (0..7).map{|i| '%-03b' % i} #=> ["000", "001", "010", "011", "100", "101", "110", "111"] RUBY_VERSION #=> "1.9.2" (0..7).map{|…

from jeweler to bundler

2009/01くらいから自作のgemの管理にはjewelerを使ってきたのですが、この度selectable_attrのruby-1.9.2対応をするのを景気にbundlerを使うようにしてみました。結果、とてもいい感じなので今後はbundlerへどんどん乗り換えたいと思います。 動機 gemの開発…

1.9系今日のハマりポイント

RUBY_VERSION #=> "1.8.7" {:a => 1, :b => nil, :c => "a"}.delete_if{|k,v| v.nil?} #=> {:a=>1, :c=>"a"} {:a => 1, :b => nil, :c => "a"}.delete_if{|(k,v)| v.nil?} #=> {:a=>1, :c=>"a"} RUBY_VERSION #=> "1.9.2" {:a => 1, :b => nil, :c => "a"}.d…

selectable_attr_rails-0.3.12リリース

http://github.com/akm/selectable_attr_railsselectable_attr( http://github.com/akm/selectable_attr )をrailsで使うためのgemであるselectable_attr_railsがじつはruby-1.9系で動いていなかったので、動くようにしました。最近、ちゃんとメンテできてい…

mongoidのassociation

ややこしい経緯でmongo_mapperを使い続けて来たけど、rails3への移行ができたので、mongoidへ移行することにした。でもこれまでKVSを何個か渡り歩いてassociation周りの使い方が違っていることが多く、ちょっと心配だったのでテストを書いてみた。 http://gi…

RSpecのhash_including

で、 with(hash_including(:key => an_instance_of(String))) って書けることに気付いた。嬉しい。

range_dsl

RubyのRangeだけではちょっと面倒な部分を簡単に書けるようなDSLを作ってみました。 http://github.com/akm/range_dsl/ 作った動機 数値の範囲を示すRangeオブジェクトを幾つか作ったり、どこからか取得できるような仕組みを作っておいて、合致した条件オブ…

HashKeyOrderable

っていうものを作りました。http://gist.github.com/358709 作った動機 Hashをeachで繰り返すときにキーで順序を指定したい、というのはたまにありますが、出力したい順序が決まっている場合もある。例えば、赤、青、黄色という順番で出力したいとか。 color…

チームのメンバーと考えたいこと

僕はけっこう押し付けがましい。まず言い方が悪い。でも回りくどい言い方をして嫌味になるよりはマシなような気もちょっとだけしてるけど、たぶんただの言い訳だろう。なんで自分でもキツい言い方なのかを考える。気持ちが先走っているのがまあ一番正直なと…

Rubeus again!

とても嬉しい話をJRuby兄弟の一人Thomas E. Eneboからもらいました。 なんといま執筆中の本で僕らが2年前に作ったRubeusを取り上げてくれるそうです!!! http://groups.google.com/group/rubeus/browse_thread/thread/63b0ac2288e765a4#Thomasはこの話の…

RBC総会 3周年!

rbc

早いものでもう3周年です。まあ色々あった気もするけど、続けてこれたのは頑張ったスタッフ、特に最首さんとchisaさんの頑張りがやっぱりでかいです。今年は行けなくて残念ですが、お祝いなので関係者は今夜は騒ぐと良いと思います。

gitサーバのインストール

git

家庭内リポジトリが必要になったので、家のサーバにgitのサーバを立てることにした。 svnのサーバを立てたりは何度もやってきたし、githubは結構長いこと使っているけど、gitのサーバって何をすればいいのか全然知らんかった自分にびっくり。「入門git」を読…

activerecord-3.0.0beta3のモデルのモジュール構造

deviceをインストールしたUserの構造を、 http://gist.github.com/11849 のメソッドを使って出力してみました。 >> User.tree_ancestors [C] User [M] Devise::Models::Trackable [M] Devise::Models::Confirmable [M] Devise::Models::Validatable [M] Devi…

warekky-0.1.1 リリース

先週0.1.0をリリースしてたんですが、時間がなくて書けなかったので、改めてご紹介。warekkyは和暦と西暦を相互変換するライブラリです。 インストールと使い方 gemでインストールして、requireするだけっす。 $ (sudo) gem install warekky $ irb require '…

間違って作っちゃったリモートのタグやブランチを削除する方法

git

jewelerでrake git:release すると、 $ rake git:release (in /Users/takeshi/workspace/warekky) Tagging v0.1.1 Pushing v0.1.1 to originという風にvで始まるバージョンが付けられてしまう。vで始まるのはやだー!っていうわけで作られたタグを $ git tag…

jewelerでgemのひな形生成

jewelerを使うと、specを使うテストまでを含めたひな形を作って、git initからコミットまでしてくれて、githubへのpushまでやってくれる。 $ jeweler warekky --directory ./warekky --rspec --github-username akm --create-repo create .gitignore create …

CassandraObject::Base.connectionの構造をしらべる

タイムアウトするまでの時間を指定したくなった。でもどこで設定していいのかわからない。Rubyのクラスの構造を逆ツリーで出力するスクリプトを以前書いたので、それを使って調べてみる。 http://gist.github.com/11849 $ irb -rubygems # クラス構造を調べ…

関連keyspaceに気をつけろ

cassandra_objectでは、associationメソッドを使って、belongs_to, has_manyに当たるものを宣言します。 http://github.com/NZKoz/cassandra_object/blob/master/test/fixture_models.rbよくよく見てみると、関連のためのFKのようなカラムの定義がありません…

Rails3.0でcassandra_object

http://github.com/akm/cassandra_object_rails3 に、http://github.com/NZKoz/cassandra_object のtest以下のモデルをrails3.0アプリとして動くようにしました。 ただし、shouldaがまだrails3対応が終わってないみたいなので、 http://github.com/akm/cassa…

BSONでFixnumはサポート外?

mongodbを使っていてこんなエラーが出た。 Cannot serialize Fixnum as a BSON type; it either isn't supported or won't translate to BSONFixnumはBSONの型としてシリアライズできない?んなはずないじゃん。 BSON.serialize({"A" => 123}) #=> #

mongo_mapperのbelongs_toの参照が返すnilはnilじゃない

mongo_mapperを使い始める前に言っておくッ! おれは今やつのスタンドをほんのちょっぴりだが体験した い…いや…体験したというよりはまったく理解を超えていたのだが…… ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i|…

simply_stored test

$ sudo port selfupdate $ sudo port install couchdb +server $ sudo couchdbでcouchdbをインストール、起動して、http://127.0.0.1:5984/ にアクセスすると、 {"couchdb":"Welcome","version":"0.11.0"} というJSONが返ってくるので、couchdbは無事起動で…

rescueしたい例外を配列で指定

begin raise ArgumentError rescue ArgumentError, NoMethodError puts $!.class.name end 出力結果 ArgumentErrorRubyではこんな風にrescueには複数の例外のクラスを記述できるけど、このrescueしたい例外クラス群を配列で指定したい。まずは、rescue以後を…

SVNのブランチをローカルのgitでチェックアウト

git-svn clone http://xxxx.xxxx/foo -T trunk -b branches -t tagsって感じでチェックアウトしてあるときに、リモートのブランチは git branch -rで確認できて、この中のブランチhogeをチェックアウトしたいときは、 git checkout -b local-hoge hogeで、lo…