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)
endが関係ない、classとdefの間にも空行が入ることから(なひも入ります)、「endが重い」というより「defの密度は高くあるべし」かも。凝集度も高くなったと勘違いできるし(おい
ところで99661じゃなくて99611です。
ML番号は直しておきました。
「defの密度が高い」というのはあるかもしれません。
昔はメソッドの途中でよく空行を入れてたんですが、
最近は滅多なことじゃ入れなくなりました。
(前はメソッドの長さ自体も長かった)