RAA の SOAP インターフェイスが [ruby-talk:99611] で紹介されている。
% ruby -r pp -r soap/wsdlDriver -e ' raa = SOAP::WSDLDriverFactory.new( "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/" ).create_driver pp raa.gem("tmail") ' #<SOAP::Mapping::Object:0x4038a468 @category=#<SOAP::Mapping::Object:0x4035a2b4 @major="Library", @minor="Mail">, @created=#<DateTime: 13243981342437209/5400000000,3/8,2299161>, @id=600, @owner= #<SOAP::Mapping::Object:0x40352758 @email=#<URI::MailTo:0x201c598c URL:mailto:aamine@loveruby.net>, @id=45, @name="Minero Aoki">, @pass=nil, @project= #<SOAP::Mapping::Object:0x4038a274 @dependency=[], @description= "TMail is an email handling library.\r\nAlmost all RFC2822/MIME specification is supported.\r\n", @download= #<URI::HTTP:0x201c99ba URL:http://i.loveruby.net/archive/tmail/tmail-0.10.8.tar.gz>, @history=[], @license="LGPL", @name="tmail", @short_description="TMail", @status="stable", @updated=nil, @url=#<URI::HTTP:0x201cb954 URL:http://i.loveruby.net/en/tmail.html>, @version="0.10.8">, @updated=#<DateTime: 10597199881960969/4320000000,3/8,2299161>>
おおっ。これは凄い。なんか無性に凄い。
以下は、同じく ruby-talk で紹介された、 プロジェクトのバージョンアップを自動化するスクリプト。
name = 'sampleproject' pass = 'sampleproject' gem = raa.gem(name) gem.project.version.succ! gem.updated = Time.now raa.update(name, pass, gem)
いいねえ。便利だねえ。 何かのバージョンを上げてみたいな…… (本末転倒)
どういうメソッドがあるんだろう。
~ % ruby -r pp -r soap/wsdlDriver -e ' raa = SOAP::WSDLDriverFactory.new( "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/" ).create_driver puts raa.methods(false) ' | sort dependents gem list_by_category list_by_owner list_created_since list_owner list_recent_created list_recent_updated list_updated_since names owner search search_description search_name search_owner search_short_description search_status search_version size tree_by_category update update_pass
へー。
(01:47)
class に対応する end は def に対応する end より重い。
def に対応する end は if に対応する end より重い。
だからおれとしては end か {} かというよりも、 この二種類の end を区別できるほうが嬉しい。
かと言って end class とか end def と書きたいかというと、 それはそれでまた気持ち悪い。 dne とか ssalc よりはマシだけど。
それで結局、現実的には
class C def m if .... .... end end end
こんなふうに class の内側に空行を入れることで 対応しているのであった。
(02:41)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
endが関係ない、classとdefの間にも空行が入ることから(なひも入ります)、「endが重い」というより「defの密度は高くあるべし」かも。凝集度も高くなったと勘違いできるし(おい
ところで99661じゃなくて99611です。
ML番号は直しておきました。
「defの密度が高い」というのはあるかもしれません。
昔はメソッドの途中でよく空行を入れてたんですが、
最近は滅多なことじゃ入れなくなりました。
(前はメソッドの長さ自体も長かった)