2010-01-01から1年間の記事一覧
Rubyのシンタックスをパースして、構文木をいじってソースコードを編集するために作ってみました。 https://github.com/akm/yard_ast_editableYARD::Parser::Ruby::RubyParserが良さげだったので、YARD::Parser::Ruby::AstNodeを拡張して、find_by_ident と …
http://ujihisa.blogspot.com/2009/07/parsers-around-ruby.html の記事の最後にあったので、あんまり期待してないで調べはじめたら、これgemとかじゃなくて、1.9系からの標準添付ライブラリなのね。ちょっとテンション高めで使ってみたらいけました!コメン…
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>…
rubynodeは古かった。探してみたら、まとめサイト発見。 http://ujihisa.blogspot.com/2009/07/parsers-around-ruby.htmlruby_parserというまんまな名前のものが見つかった。 http://parsetree.rubyforge.org/ruby_parser/ruby-1.9.2で試してみた。 require …
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のメールはスルーしてください。 RT拡散希望Gmailユーザーは「ShoppyBag」メールを開かないでのまとめ。 http:/…
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{|…
2009/01くらいから自作のgemの管理にはjewelerを使ってきたのですが、この度selectable_attrのruby-1.9.2対応をするのを景気にbundlerを使うようにしてみました。結果、とてもいい感じなので今後はbundlerへどんどん乗り換えたいと思います。 動機 gemの開発…
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…
http://github.com/akm/selectable_attr_railsselectable_attr( http://github.com/akm/selectable_attr )をrailsで使うためのgemであるselectable_attr_railsがじつはruby-1.9系で動いていなかったので、動くようにしました。最近、ちゃんとメンテできてい…
ややこしい経緯でmongo_mapperを使い続けて来たけど、rails3への移行ができたので、mongoidへ移行することにした。でもこれまでKVSを何個か渡り歩いてassociation周りの使い方が違っていることが多く、ちょっと心配だったのでテストを書いてみた。 http://gi…
で、 with(hash_including(:key => an_instance_of(String))) って書けることに気付いた。嬉しい。
RubyのRangeだけではちょっと面倒な部分を簡単に書けるようなDSLを作ってみました。 http://github.com/akm/range_dsl/ 作った動機 数値の範囲を示すRangeオブジェクトを幾つか作ったり、どこからか取得できるような仕組みを作っておいて、合致した条件オブ…
っていうものを作りました。http://gist.github.com/358709 作った動機 Hashをeachで繰り返すときにキーで順序を指定したい、というのはたまにありますが、出力したい順序が決まっている場合もある。例えば、赤、青、黄色という順番で出力したいとか。 color…
僕はけっこう押し付けがましい。まず言い方が悪い。でも回りくどい言い方をして嫌味になるよりはマシなような気もちょっとだけしてるけど、たぶんただの言い訳だろう。なんで自分でもキツい言い方なのかを考える。気持ちが先走っているのがまあ一番正直なと…
とても嬉しい話をJRuby兄弟の一人Thomas E. Eneboからもらいました。 なんといま執筆中の本で僕らが2年前に作ったRubeusを取り上げてくれるそうです!!! http://groups.google.com/group/rubeus/browse_thread/thread/63b0ac2288e765a4#Thomasはこの話の…
早いものでもう3周年です。まあ色々あった気もするけど、続けてこれたのは頑張ったスタッフ、特に最首さんとchisaさんの頑張りがやっぱりでかいです。今年は行けなくて残念ですが、お祝いなので関係者は今夜は騒ぐと良いと思います。
家庭内リポジトリが必要になったので、家のサーバにgitのサーバを立てることにした。 svnのサーバを立てたりは何度もやってきたし、githubは結構長いこと使っているけど、gitのサーバって何をすればいいのか全然知らんかった自分にびっくり。「入門git」を読…
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…
先週0.1.0をリリースしてたんですが、時間がなくて書けなかったので、改めてご紹介。warekkyは和暦と西暦を相互変換するライブラリです。 インストールと使い方 gemでインストールして、requireするだけっす。 $ (sudo) gem install warekky $ irb require '…
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を使うと、specを使うテストまでを含めたひな形を作って、git initからコミットまでしてくれて、githubへのpushまでやってくれる。 $ jeweler warekky --directory ./warekky --rspec --github-username akm --create-repo create .gitignore create …
タイムアウトするまでの時間を指定したくなった。でもどこで設定していいのかわからない。Rubyのクラスの構造を逆ツリーで出力するスクリプトを以前書いたので、それを使って調べてみる。 http://gist.github.com/11849 $ irb -rubygems # クラス構造を調べ…
cassandra_objectでは、associationメソッドを使って、belongs_to, has_manyに当たるものを宣言します。 http://github.com/NZKoz/cassandra_object/blob/master/test/fixture_models.rbよくよく見てみると、関連のためのFKのようなカラムの定義がありません…
http://github.com/akm/cassandra_object_rails3 に、http://github.com/NZKoz/cassandra_object のtest以下のモデルをrails3.0アプリとして動くようにしました。 ただし、shouldaがまだrails3対応が終わってないみたいなので、 http://github.com/akm/cassa…
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を使い始める前に言っておくッ! おれは今やつのスタンドをほんのちょっぴりだが体験した い…いや…体験したというよりはまったく理解を超えていたのだが…… ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i|…
$ 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は無事起動で…
begin raise ArgumentError rescue ArgumentError, NoMethodError puts $!.class.name end 出力結果 ArgumentErrorRubyではこんな風にrescueには複数の例外のクラスを記述できるけど、このrescueしたい例外クラス群を配列で指定したい。まずは、rescue以後を…
git-svn clone http://xxxx.xxxx/foo -T trunk -b branches -t tagsって感じでチェックアウトしてあるときに、リモートのブランチは git branch -rで確認できて、この中のブランチhogeをチェックアウトしたいときは、 git checkout -b local-hoge hogeで、lo…