トップ «前の日記(2009-09-29) 最新 次の日記(2009-10-06)» 編集

Route 477



2009-10-03

[ruby][memo] gem戦闘力362

ちょっとgem環境整理しなおすんでメモ

BlueCloth-1.0.0
GraphvizR-0.5.1
ParseTree-2.2.0
ParseTree-3.0.2
RedCloth-4.1.9
RedCloth-4.2.2
Remarkably-0.5.2
RubyInline-3.8.2
ZenTest-4.1.3
aaronp-frex-1.0.1
abstract-1.0.0
actionmailer-2.3.3
actionmailer-2.3.4
actionpack-2.3.3
actionpack-2.3.4
activerecord-2.3.3
activerecord-2.3.4
activeresource-2.3.3
activeresource-2.3.4
activesupport-2.3.3
activesupport-2.3.4
acts_as_paranoid-0.3.1
acts_as_versioned-0.2.3
addressable-2.0.2
addressable-2.1.0
amalgalite-0.7.7
archive-tar-minitar-0.5.2
arrayfields-4.7.2
autocode-1.0.0
bacon-1.1.0
bluecloth-2.0.5
bones-2.5.1
builder-2.1.2
camping-1.5
capistrano-2.5.5
case-0.5
cgi_multipart_eof_fix-2.5.0
cheat-1.2.1
chipmunk-ruby-4.1.0
choice-0.1.2
chriseppstein-compass-0.6.5
classx-0.0.5
coderay-0.8.312
colored-1.1
columnize-0.2
commonwatir-1.6.2
configatron-2.2.1
configuration-0.0.5
constructor-1.0.2
crate-0.2.1
croc-1.0.0
cucumber-0.3.101
cursesx-003
cutagem-0.0.7
daemons-1.0.10
darkfish-rdoc-1.1.5
data_mapper-0.9.8
data_objects-0.10.0
data_objects-0.9.12
datamapper-0.10.1
datamapper-0.9.11
defunkt-github-0.3.4
diamondback-ruby-0.20090421-x86-darwin-9
diff-lcs-1.1.2
dm-adjust-0.10.1
dm-adjust-0.9.11
dm-aggregates-0.10.1
dm-aggregates-0.9.11
dm-ar-finders-0.10.1
dm-ar-finders-0.9.11
dm-cli-0.10.1
dm-cli-0.9.11
dm-constraints-0.10.1
dm-constraints-0.9.11
dm-core-0.10.1
dm-core-0.9.11
dm-ferret-adapter-0.9.11
dm-is-list-0.10.1
dm-is-list-0.9.11
dm-is-nested_set-0.10.1
dm-is-nested_set-0.9.11
dm-is-remixable-0.10.1
dm-is-remixable-0.9.11
dm-is-searchable-0.10.1
dm-is-searchable-0.9.11
dm-is-state_machine-0.10.1
dm-is-state_machine-0.9.11
dm-is-tree-0.10.1
dm-is-tree-0.9.11
dm-is-versioned-0.10.1
dm-is-versioned-0.9.11
dm-is-viewable-0.10.1
dm-is-viewable-0.9.11
dm-migrations-0.10.1
dm-migrations-0.9.11
dm-more-0.10.1
dm-more-0.9.11
dm-observer-0.10.1
dm-observer-0.9.11
dm-querizer-0.10.1
dm-querizer-0.9.11
dm-rest-adapter-0.10.1
dm-rest-adapter-0.9.11
dm-serializer-0.10.1
dm-serializer-0.9.11
dm-shorthand-0.10.1
dm-shorthand-0.9.11
dm-sweatshop-0.10.1
dm-sweatshop-0.9.11
dm-tags-0.10.1
dm-tags-0.9.11
dm-timestamps-0.10.1
dm-timestamps-0.9.11
dm-types-0.10.1
dm-types-0.9.11
dm-validations-0.10.1
dm-validations-0.9.11
do_sqlite3-0.10.0
do_sqlite3-0.9.12
echoe-3.1.1
english-0.3.1
erubis-2.6.5
eventful-1.0.0
eventmachine-0.12.8
extensions-0.6.0
extlib-0.9.12
extlib-0.9.13
facets-2.5.2
faker-0.3.1
fakeweb-1.2.1
fastthread-1.0.1
ferret-0.11.6
filebase-0.3.6
firewatir-1.6.2
flexmock-0.8.4
functor-0.5.1
gamebox-0.0.6
gem_plugin-0.2.3
gembox-0.2.0
gemcutter-0.1.2
gemi-0.0.3
gemify-0.2.4
genki-cutagem-0.0.8.3
gettext-2.0.0
git-1.1.1
git-1.2.4
graph-1.1.0
haml-2.2.2
highline-1.5.0
hoe-2.3.2
hpricot-0.8.1
icalendar-1.0.2
ifchanged-1.0.0
innate-2009.07
innate-2009.10
irb_rocket-0.1.2
jackdempsey-sequel_polymorphic-0.0.1
jake-1.0.0
jbarnette-johnson-1.0.0.200808062111
jbarnette-johnson-1.0.0.20090402155420
jeremymcanally-pending-0.1
jeweler-1.0.2
jeweler-1.2.1
johnson-1.1.0
json-1.1.3
json_pure-1.1.6
langalex-culerity-0.2.3
launchy-0.3.3
less-1.1.12
linecache-0.43
live_console-0.2.0
locale-2.0.4
locale_rails-0.1.0
lockfile-1.4.3
logging-0.9.6
mack-0.8.2
mack-active_record-0.8.2
mack-asset_packager-0.8.2
mack-caching-0.8.2
mack-data_factory-0.8.2
mack-data_mapper-0.8.2
mack-distributed-0.8.2
mack-encryption-0.8.2
mack-facets-0.8.2
mack-haml-0.8.2
mack-javascript-0.8.2
mack-localization-0.8.2
mack-markaby-0.8.2
mack-more-0.8.2
mack-notifier-0.8.2
mack-orm-0.8.2
mack-pdf_writer-0.8.2
mailfactory-1.4.0
mame-simpletrace-1.0.0
manalang-bdoc-0.2.2
markaby-0.5
maruku-0.5.9
mechanize-0.9.3
meow-2.1.0
merb-1.0.12
merb-action-args-1.0.12
merb-assets-1.0.12
merb-auth-1.0.12
merb-auth-core-1.0.12
merb-auth-more-1.0.12
merb-auth-slice-password-1.0.12
merb-cache-1.0.12
merb-core-1.0.12
merb-exceptions-1.0.12
merb-gen-1.0.12
merb-haml-1.0.12
merb-helpers-1.0.12
merb-mailer-1.0.12
merb-more-1.0.12
merb-param-protection-1.0.12
merb-slices-1.0.12
merb_datamapper-1.0.12
metaid-1.0
methodphitamine-1.0.0
mime-types-1.15
mislav-will_paginate-2.3.11
mocha-0.9.5
mongrel-1.1.5
moro-open_id_authentication-1.0.0
moro-repim-0.1.7
mspec-1.5.12
ncurses-0.9.1
net-scp-1.0.2
net-sftp-2.0.2
net-ssh-2.0.11
net-ssh-gateway-1.0.1
newgem-1.2.3
nokogiri-1.3.3
ocra-1.1.1
oniguruma-1.1.0
opencv-0.0.6
openid_fu_generator-0.0.1
openid_login_generator-0.1
oyster-0.9.2
packr-3.1.0
passenger-2.2.2
pit-0.0.6
plist-3.0.0
polyglot-0.2.5
polyglot-0.2.9
publisher-1.1.1
quality_extensions-1.1.4
r18n-core-0.2.1
r18n-desktop-0.2.1
racc-1.4.6
rack-0.9.1
rack-1.0.0
rack-cache-0.2.0
rack-test-0.5.0
radiant-0.8.0
rails-2.3.3
rails-2.3.4
rails_datamapper-0.10.1
rak-0.9
rake-0.8.7
rake-compiler-0.5.0
rake-compiler-0.6.0
rakegen-0.6.6
ramaze-2009.05
ramaze-2009.07
ramaze-2009.10
randexp-0.1.4
rcodetools-0.8.1.0
rcov-0.8.1.2.0
rdiscount-1.3.5
rdoc-2.4.3
rdtool-yhara-0.0.0
reagent-simple-gem-0.4.1
red-4.1.7
redparse-0.8.0
reposh-0.1.6
resh-0.0.4
rexical-1.0.4
rmail-1.0.0
rocketstarter-0.1.0
rr-0.10.0
rspec-1.2.8
rspec-rails-1.2.7.1
rtask-010
rubigen-1.5.2
rubigraph-0.2.0
ruby-debug-0.10.3
ruby-debug-base-0.10.3
ruby-graphviz-0.9.0
ruby-growl-1.0.1
ruby-openid-2.1.4
ruby-station-0.1.1
ruby-station-0.1.3
ruby-station-runtime-0.0.4
ruby-treemap-0.0.3
ruby2ruby-1.2.1
ruby_parser-2.0.4
rubyforge-1.0.4
rubygame-2.5.3
rubygems-update-1.3.5
rubylexer-0.7.2
rubypython-0.2.7
rubyscript2exe-0.5.3
rubysdl-2.1.1
rubytter-0.8.0
rubyzip-0.9.1
rushcheck-0.8
s4t-utils-1.0.4
scrubber-scrubyt-0.4.16
scrubyt-0.4.06
sequel-3.2.0
sequence-0.2.0
sexp_processor-3.0.0
shotgun-0.4
sinatra-0.9.4
sinatra-r18n-0.2.1
sources-0.0.1
spork-0.5.7
sproutcore-0.9.20
sqlite3-ruby-1.2.5
sup-0.8.1
swdyh-gisty-0.0.11
syntax-1.0.0
systemu-1.2.0
taka-0.0.1
technicalpickles-gemstalker-0.4.0
templater-0.5.0
tenderlove-frex-1.0.1.20090313144615
term-ansicolor-1.0.3
termcolor-0.3.1
termios-0.9.4
termtter-1.3.1
test-unit-2.0.2
textpow-0.10.1
thin-1.2.2
thor-0.9.9
thoughtbot-factory_girl-1.2.1
ticketmap-0.2.0
tickets-0.1.0
tlsmail-0.0.1
treetop-1.3.0
treetop-1.4.2
trollop-1.13
ultraviolet-0.10.2
unroller-0.1.3
user-choices-1.1.6
uuidtools-1.0.7
vegas-0.0.3.1
visionmedia-bind-0.2.6
visionmedia-commander-3.2.9
visionmedia-jspec-2.0.3
waves-0.8.2
webrat-0.5.3
why-bloopsaphone-0.4
win32-api-1.4.2
wirble-0.1.3
wx_sugar-0.1.21
wxruby-1.9.9-universal-darwin-9
xml-simple-1.0.12
yard-0.2.2
yhara-ruby-sl-0.11
yhara-tickets-0.1.0.3

[arc] Arc 3.1はいかにしてset-car!を実装したか

pg「MzSchemeの最新版はset-car!がないから古いやつを入れてね」
  ↓
pg「パッチ貰ったんで最新のMzSchemeでも動くようになったよ」

えっ、それってset-car!するたびにリストを作り直すってこと?と思ってパッチを見たら:

+(define (set-ca/dr! offset who p x)
+  (if (pair? p)
+    (let ([p* (get-ptr)])
+      (ptr-set! p* _scheme p)
+      (ptr-set! (ptr-ref p* _pointer 0) _scheme offset x))
+    (raise-type-error who "pair" p)))

ptr-set!ってなんだwww

[ruby-station] Windows対応

2時間ほど試行錯誤したあげく、「Open3がない」というオチ。今回は諦めるか…。

RubyStationで外部プロセスを起動したい場面は2つある。

  1. アプリケーションの起動。stdout, stderrは取れなくてもいい(起動に失敗した時のことを考えると取れてほしいけど…)。できれば終了を検知したい。
  2. gemコマンドの起動(インストール、アンインストール)。stdout, stderrが必須、できればリアルタイムに。終了の検知は必須。

で、Rubyでどうやるかというと:

  • 前者
    • Process.spawn (○windows対応 ×1.9のみ)
    • Thread + system (○windows対応, 1.8でも)
  • 後者
    • Popen3 (×windows非対応)
    • PTY (○リアルタイム、×windows非対応)
    • そもそもgemコマンドを使うのをやめる (GemのAPIを叩く) (○リアルタイム, windows対応 △gemのバージョン間の差異を踏まないか)

という感じ。

さて、「windowsで」「1.8で」「起動したプロセスのstderrへの書き込みを取得する方法」ってあるのかな。

本日のツッコミ(全2件) [ツッコミを入れる]
なかむら(う) (2009-10-04 04:13)

Windowsに限らず、プロセス生成前に$stderrをパイプでreopenしておけば可能です。<br><br>origerr = $stderr.dup<br>r,w = IO.pipe<br>$stderr.reopen(w)<br>t = Thread.new do<br> system("ruby -e '$stderr.puts 12345'")<br>end<br><br>sleep 0.5 # 厳密には、ここで実際にプロセス起動されるのを待つ<br>w.close<br>$stderr.reopen(origerr)<br><br>t.join<br>p r.read

yhara (2009-10-06 18:58)

ありがとうございます。普通の方法でできたんですね。