« 2009年4月 | トップページ | 2009年6月 »

2009年5月

2009年5月18日 (月)

rails.vim pathには "app/models/blog.rb" というファイルがありません

rails.vimを使っていますが、RAILS_ROOTのパスにスペースが含まれていると、Rmodelコマンドがpathには "app/models/blog.rb" というファイルがありません のエラーになってしまう。英語の場合はCan't find file "app/models/blog.rb" in path

理由はrailsのソースをvimで開くとオプションのpathにRAILS_ROOTのパスがセットされるのだが、  その際スペースが\(back-slash)でエスケープされていない。

修正には
C:/Program Files/vim71-kaoriya-w32j/runtime/autoload/rails.vim
174行目を下記に修正

 let path .= "," . a:000[i]
            ↓
let path .= "," . substitute(a:000[i],'\\\@<! ','\\ ','g')

| | コメント (0) | トラックバック (0)

2009年5月17日 (日)

ログからバイナリファイル変換

ログに出力した数字(10進数、16進数)をバイナリに変換するツール
バイナリに変換すれば、stiringなどのツールで各構造体のメンバにどんな
データが入っていたかを調べられたり、ascii以外の文字コードでもバイナリ
変換後にvim等のテキストエディタで読めるようになる。
使い方

log2bin.rb [-x] 出力ファイル
-x 入力が16進の場合

標準入力にバイナリ化したい文字列を渡す。
10進数は1~3桁、16進数は2桁の連続した数字を取り込み、それ以外
の文字列は無視。改行もOK
Ctrl-Dで入力終了

いつものように自己責任でお願いします。
log2bin.rb

 #!/bin/env ruby

$HEX = false
if ARGV[0] == "-x"
  $HEX = true
  ARGV.shift
end
if ARGV.length != 1
  puts "#{$0} outputfile"
  exit -1
end
unless file = File.open(ARGV[0],"wb")
  puts "#{$0} outputfile"
  puts "#{ARGV[0]} can't write"
  exit -1
end
begin
  datas = []
  if $HEX
    STDIN.each do |line|
      datas.concat(line.scan(/[\da-zA-Z]{2}/).map do|i| i.hex end)
    end
  else
    STDIN.each do |line|
      datas.concat(line.scan(/[\d]{1,3}/).map do|i| i.to_i end)
    end
  end
  file.write(datas.pack("C*"))
ensure
  file.close
end

| | コメント (0) | トラックバック (0)

2009年5月14日 (木)

undefined method use_transactional_fixtures=

仕事上の関係でrailsのversionを2.1から2.3で作りなおすことになった。
2.3用にgem install rspec rspec-railsで最新のrspecをinstallし、正しく
動作することを確認したのだが、逆にrails 2.1のrspecが
undefined method use_transactional_fixtures=
で動作しなくなってしまった。
rails 2.1にはrspec 1.1.8のバージョンが必要だからだ。

gem "rspec","= 1.1.8"

と指定してみたのだが、

can't activate rspec(= 1.1.8), already activated rspec-1.2.6

のエラーが出力される。

対応として下記の記述をRakefileの先頭と、spec/spec_helper.rbに記述することで
実行できるようになった。

gem "rspec","= 1.1.8"
$:.unshift File.expand_path(File.dirname(__FILE__) + "/vendor/plugins/rspec-rails/lib")
$:.unshift File.expand_path(File.dirname(__FILE__) + "/vendor/plugins/rspec-rails/bin")

| | コメント (0) | トラックバック (0)

« 2009年4月 | トップページ | 2009年6月 »