この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
matzrubyというブランチが増えて、simple_versionのやり方のpatchlevel対応だけだと無理が出てきそうな気がしたので、pipeを使って標準出力を奪って、version.cのruby_show_versionという関数の出力を取り出そうという作戦に変更しようとしてみた。
DLを使えばいいのかと思いきや、使い方がよくわからずに適当にやってみたら使えたり、現在のtrunkだとdlがmake installでインストールされなかったので、rbconfigにも対応してみたりした。
module RubyShowVersion
module_function
# dl依存版
def dl_version
require 'dl/import'
eval(<<-'RUBY_CODE', binding, __FILE__, __LINE__+1)
module RubyShowVersion
if defined?(DL::Importable)
extend DL::Importable
dlload nil
else
extend DL::Importer
dlload DL::Handle.new(nil)
end
extern "void ruby_show_version()"
ruby_show_version
end
RUBY_CODE
end
# rbconfig依存版
def rbconfig_version
require 'rbconfig'
c = Config::CONFIG
rubypath = File.join(c['bindir'], c['ruby_install_name'] + c['EXEEXT'])
system(rubypath, '-v')
end
# patchlevel対応版(matzruby未対応)
def simple_version
if defined?(RUBY_PATCHLEVEL)
puts "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]"
else
puts "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
end
end
# version情報表示
def version
IO.popen('-', 'r') do |io|
return io.read if io
begin
dl_version
rescue LoadError
begin
rbconfig_version
rescue LoadError
simple_version
end
end
$stdout.flush
exit!(0)
end
end
end