Hatena::ブログ(Diary)

@jitteの日記 RSSフィード

2008-02-07

[][][] WindowsRailsのログをカラー表示する

ないはずがないと思っていたが、やっぱりあった。

先日調べたときは見つけられなかったんだけど、今日たまたまRubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)を読もうとして発見。いますぐ gem install win32console するべし。


script/server で win32console を使う

gems/rails-2.0.2/lib/commands/servers/base.rb の先頭に

require 'win32/console/ansi'

ついでに、ログをUTF8で残している人は12行目を

-          print contents
+         print NKF.nkf('-s', contents)

としておくとよいだろう。

標準の autotest で win32console を使う

RSpecの場合は上記リンクをみてもらうとして、標準のautotest(Test::Unit)でredgreenしたい場合は、ホームディレクトリかRAILS_ROOTに.autotestを作り、

require 'win32/console/ansi'
require 'redgreen'

とするとよい。redgreen がまだの人は gem install redgreen で。

2008-02-03

[][][] Rubyist Magazine出張版 Ruby on Windows

Macに移行しちゃったので最近あまりお世話になる機会がないWin32OLEだが、この本はリスペクトのため購入。

これだけまとまった情報源は他に見あたらない。現役の人は必携ではなかろうか。

Rubyist Magazine出張版 Ruby on Windows

Rubyist Magazine出張版 Ruby on Windows

2008-01-28

[][][] ログ出力の悩み

まず、色。

Macのときは全然問題ないんだけどWindowsANSIエスケープシーケンスを手軽に使う方法がわからない。

command.comだとANSI.SYSを組み込めばいちおう(カクカクするけど)カラーになることはわかったが、rubyを起動したとたん元に戻ってしまう。16bitアプリじゃないとだめなのかな。わからん。

ひょっとしてCygwinbashなら・・・とおもってインストールしてみたが、よく考えたらCygwin版のRubyは入れてないしドはまりの予感がしたから撤退。

色をあきらめることにすれば、config/environment.rbの隅っこに以下のように書くとよいことがわかった。

ActiveRecord::Base.colorize_logging = false

次に文字コード、コマンドプロンプトはCP932(SJIS系)なので、UTF8でRailsのコードを書いてるとログが当然UTF8だから文字化けする。どうするか。

  • Rails全部をSJISで書く。conf/environment.rb に $KCODE = 's' とか。
  • ログを書くときだけ NKF.nkf('-s', ...) する。
  • コマンドプロンプトのコードページをUTF8にする。

RailsはUTF8で統一したほうが絶対いいだろうから1つめは却下。

2つめは、できなくはなさそうだけどどこから探せばよいかよく分からないし、そもそもUNIX系ならtail -f log/*.log | nkf -s で一発だろとか、いやいやそれならUTF8のままでいいじゃないとか考えるととっても不毛な気がし始めてやはり追跡中止。

3つめ、これはCHCPというコマンドでUTFのコードページ65001を指定すれば良さそうと言うところまでわかったのはよかったが、サーバのログが途中から表示されなくなってしまうことが判明。

ということで、標準のコマンドプロンプトだと限界かも。みんなどうしてるんだろう。

コマンドプロンプトの代替品があればいいんだよねえ。作ってもそれほど難しくないだろうし、サンプルプログラムとかありそう。ありそうなんだけど、こういうありがちなものは探すのが難しいんだよなあ。

これ、よさそうだけど、どうかなあ。というところで時間切れ。

2007-12-29

[][] Windows 2000 on Parallelsで困ること/困らないこと

困ること

  • IE7が動かない。*1
  • Windows Media Player 10以降が動かない。9だとYahoo!動画で毎回ライセンスキー確認ダイアログが出る。*2
  • Silverlight 1.0が動かない。*3
  • Visual Studio 2008 Express Editionが動かない。*4

つまり、あまり困っていない。

困らないこと

  • メモリ消費が少ない(256M割り当てで十分)。
  • ディスク消費が少ない(インストール直後で2Gくらい)。
  • スナップショットですぐ復元。

つまり、快適。

*1Windows Internet Explorer 7: システム要件

*2:設定方法がわかってないだけかも

*3:1.1は対応するらしい→Microsoft Silverlight: Light Up the Web

*4リリースノートと既知の問題

2007-12-11

jitte2007-12-11

[][] win32/clipboard のインストールにてこずるの巻

ああもう、10分くらいで終わる見込みでやりかけた仕事が3時間もかかっちゃったじゃん!

(1) gemから直接インストール

以前はこれでOKだったのだけど・・・

gem install win32-clipboard

----
Building native extensions.  This could take a while...
ERROR:  Error installing win32-clipboard:
       ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb install -r win32-clipboard
can't find header files for ruby.


Gem files will remain installed in
C:/Ruby/lib/ruby/gems/1.8/gems/win32-api-1.0.5 for inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/win32-api-1.0.5
/ext/gem_make.out
----

ビルド環境がないので、失敗する。なんでwin32前提なくせにバイナリ配布してないんだ・・・まあいいや、コンパイル済みのバイナリgemを取ってくりゃいいんだろ。

(2) sourceforgeから、win32-clipboardをインストール

http://rubyforge.org/frs/?group_id=85

http://rubyforge.org/frs/download.php/23224/win32-clipboard-0.4.3.gem


gem install win32-clipboard-0.4.3.gem
----
Successfully installed win32-api-1.0.5-unknown
Successfully installed windows-api-0.2.0
Successfully installed windows-pr-0.7.3
Successfully installed win32-clipboard-0.4.3
4 gems installed
Installing ri documentation for win32-api-1.0.5-unknown...
Installing ri documentation for windows-api-0.2.0...
Installing ri documentation for windows-pr-0.7.3...
Installing ri documentation for win32-clipboard-0.4.3...
Installing RDoc documentation for win32-api-1.0.5-unknown...
Installing RDoc documentation for windows-api-0.2.0...
Installing RDoc documentation for windows-pr-0.7.3...
Installing RDoc documentation for win32-clipboard-0.4.3...
----

ところが、依存関係から自動インストールされるwin32-apiがうまく読み込めない。

irb -r rubygems -r win32/clipboard
----
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require': no such file to load -- win32/api (LoadError)
       from
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
       from C:/Ruby/lib/ruby/gems/1.8/gems/windows-api-0.2.0
/lib/windows/api.rb:1
       from
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
       from
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
       from C:/Ruby/lib/ruby/gems/1.8/gems/windows-pr-0.7.3
/lib/windows/clipboard.rb:1
       from
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
       from
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
       from C:/Ruby/lib/ruby/gems/1.8/gems/win32-clipboard-0.4.3
/lib/win32/clipboard.rb:1
       from
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in
`gem_original_require'
       from
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
       from C:/Ruby/lib/ruby/1.8/irb/init.rb:252:in `load_modules'
       from C:/Ruby/lib/ruby/1.8/irb/init.rb:250:in `each'
       from C:/Ruby/lib/ruby/1.8/irb/init.rb:250:in `load_modules'
       from C:/Ruby/lib/ruby/1.8/irb/init.rb:21:in `setup'
       from C:/Ruby/lib/ruby/1.8/irb.rb:54:in `start'
       from C:/Ruby/bin/irb.bat:21
----

(3) win32-apiの手動インストール

何なんだ・・・調べてみるとgemがwin32/api.soを見つけられないらしい。フォルダ名が-unknownで終わってるのが気になるがよくわからないので、gems\win32-api-1.0.5-unknown\lib にある win32/api.so を site-ruby/1.8/i386-msvcrt にコピーする。

irb -r rubygems -r win32/clipboard
----
C:/Ruby/lib/ruby/gems/1.8/gems/win32-clipboard-0.4.3
/lib/win32/clipboard.rb:25:NameError: uninitialized constant
Win32::Clipboard::Win32API
----

お、いいところまでいった。あと、Win32APIが必要らしい。

irb -r rubygems -r Win32API -r win32/clipboard
----
irb(main):001:0>
----

やっと使えるようになった!

(4) 試行錯誤中にわかったこと

依存先のgemが壊れていた場合、依存もとのgemspecファイルを編集して、依存指定を外すとよい。

そもそもそういうgemを配布しないで欲しいわけだが・・・。