おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

Railsの開発環境でもThinを使う

 開発環境で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  

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