ホーム DoRuby Rails のエラーページから問題のファイルを1クリックで開く for Windows

Rails のエラーページから問題のファイルを1クリックで開く for Windows

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Rails のエラーページにはありがたいことにスタックトレースが表示されていますが、どうせならそこに書かれたファイル名をクリックするだけでエディタが開くようにしてしまおうという作戦です。

手順は以下の3ステップです 。

  1. スタックトレース中のパスをうさんくさい URL にリンクさせる
  2. うさんくさい URL を使ってエディタを起動できるようにする
  3. うさんくさい URL のプロトコルを扱えるよう Windows に教えてやる

スタックトレース中のパスをうさんくさい URL にリンクさせる

Greasemonkey を使って app/ で始まっている文字列をファイルパスとみなし、リンクを作ります。

editor という勝手に決めたプロトコルを使って、editor:///エラーが/発生した/ファイル.rb?行番号 というようなうさんくさい URL にリンクしてやります。

// ==UserScript==
// @name           rails trace: link to editor
// @namespace      http://userscripts.org/users/59751
// @include        http://colinux:3000/*
// ==/UserScript==

(function() {
  if (document.title != "Action Controller: Exception caught") return;
  var railsRoot = document.body.innerHTML.match(/RAILS_ROOT: ([^\s&]+)/)[1];
  if (!railsRoot) return;
  // samba のマウントポイントに合わせて書き換える
  railsRoot = railsRoot.replace('/home/sugimoto', '/l');
  var pattern = /(app\/[^:]+):(\d+)/g;
  document.body.innerHTML = document.body.innerHTML.replace(pattern, function(all, path, line) {
    var fullPath = railsRoot + "/" + path;
    return '&a href="editor://'+fullPath+'?'+line+'">'+all+'&/a>';
  })
})()

ダウンロード

うさんくさい URL を使ってエディタを起動できるようにする

editor URL にアクセスした時に実行するプログラムを作ります。せっかくなので Ruby で作ってみましょう。

#!/usr/bin/env ruby

require 'uri'
u = URI.parse(ARGV[0])
# Cygwin パスから Windows パスに変換。
# Cygwin を使用していない場合は適当に読み替えてください。
path = `cygpath -w "#{u.path}"`.chomp
system('C:/app/xyzzy/xyzzycli.exe "%s" -go %s' % [path, u.query])

うさんくさい URL のプロトコルを扱えるようWindows に教えてやる

これだけだとリンクをつついても、editor というプロトコルはどのプログラムにも関連づけられておらず…… と言われて悲しい思いをするだけなので、レジストリに以下のエントリを追加してやります。

[HKEY_CLASSES_ROOT\editor]
@="URL:editor Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\editor\DefaultIcon]
@="\"C:\\app\\xyzzy\\xyzzy.exe\",0"

[HKEY_CLASSES_ROOT\editor\shell]

[HKEY_CLASSES_ROOT\editor\shell\open]

[HKEY_CLASSES_ROOT\editor\shell\open\command]
@="\"C:\\cygwin\\bin\\ruby\" \"C:\\home\\sugimoto\\bin\\run-editor.rb\" \"%1\""

ダウンロード

ファイルを開けば上記内容を追加できますが、内容は環境に合わせて変更してください。

おめでとうございます

リンクをつつくと……

エディタが開く!

記事を共有

最近人気な記事