開発環境でThinを使っても、別プロセスでtail -f でログを見なくちゃいけないので面倒です。なので、commands/serverのソースを参考に気軽にThinを開発環境で使えるようにしてみました。

RAILS_ROOT/script/thin

#!/usr/bin/env ruby
require File.dirname( __FILE__ ) + '/../config/boot'
require 'activesupport'
require 'commands/servers/base'

ENV["RAILS_ENV"] = "development"
RAILS_ENV.replace("development") if defined?(RAILS_ENV)

require 'initializer'
Rails::Initializer.run(:initialize_logger)

puts "=> Rails application starting by Thin"
puts "=> Ctrl-C to shutdown server"
tail_thread = tail(Pathname.new("#{File.expand_path(RAILS_ROOT)}/log/#{RAILS_ENV}.log").cleanpath)

trap(:INT) { exit }

begin
  `thin start`
ensure
  tail_thread.kill if tail_thread
  puts 'Exiting'
end

これだけ。特に深くソースを探ったわけではないので、おかしなことをやっているかもしれないけど、まあ動いたし、使うのはぼくだけだからいいや。これで、

./script/thin

を実行すれば、

[tsukasa@] $ ./script/thin 
=> Rails application starting by Thin
=> Ctrl-C to shutdown server
  SQL (0.000165)   SET NAMES 'utf8'
  SQL (0.000103)   SET SQL_AUTO_IS_NULL=0
  SQL (0.000120)   SELECT version FROM schema_info

こんな感じでログも表示されるので便利です。