aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Klosinski <fluxin@gmail.com>2008-06-25 16:40:00 -0500
committerJeremy Kemper <jeremy@bitsweat.net>2008-06-25 18:56:52 -0700
commita93ea88c0623b4f65af98c0eb55924c335bb3ac1 (patch)
treedee675ee2f0adc7c1e09f53b988dbe609bdf10be
parent24c7f41b4fdc411e35131f9065852a685032211f (diff)
downloadrails-a93ea88c0623b4f65af98c0eb55924c335bb3ac1.tar.gz
rails-a93ea88c0623b4f65af98c0eb55924c335bb3ac1.tar.bz2
rails-a93ea88c0623b4f65af98c0eb55924c335bb3ac1.zip
Added Thin support to script/server. [#488 state:resolved]
-rw-r--r--railties/CHANGELOG2
-rw-r--r--railties/lib/commands/server.rb14
-rw-r--r--railties/lib/commands/servers/thin.rb25
3 files changed, 39 insertions, 2 deletions
diff --git a/railties/CHANGELOG b/railties/CHANGELOG
index 7e5c35da15..a37dc6c0eb 100644
--- a/railties/CHANGELOG
+++ b/railties/CHANGELOG
@@ -1,5 +1,7 @@
*Edge*
+* Added Thin support to script/server. #488 [Bob Klosinski]
+
* Fix script/about in production mode. #370 [Cheah Chu Yeow, Xavier Noria, David Krmpotic]
* Add the gem load paths before the framework is loaded, so certain gems like RedCloth and BlueCloth can be frozen.
diff --git a/railties/lib/commands/server.rb b/railties/lib/commands/server.rb
index 40ffdd1167..7306c248fb 100644
--- a/railties/lib/commands/server.rb
+++ b/railties/lib/commands/server.rb
@@ -13,11 +13,19 @@ rescue Exception
# Mongrel not available
end
+begin
+ require_library_or_gem 'thin'
+rescue Exception
+ # Thin not available
+end
+
server = case ARGV.first
- when "lighttpd", "mongrel", "new_mongrel", "webrick"
+ when "lighttpd", "mongrel", "new_mongrel", "webrick", "thin"
ARGV.shift
else
- if defined?(Mongrel)
+ if defined?(Thin)
+ "thin"
+ elsif defined?(Mongrel)
"mongrel"
elsif RUBY_PLATFORM !~ /(:?mswin|mingw)/ && !silence_stderr { `lighttpd -version` }.blank? && defined?(FCGI)
"lighttpd"
@@ -33,6 +41,8 @@ case server
puts "=> Booting lighttpd (use 'script/server webrick' to force WEBrick)"
when "mongrel", "new_mongrel"
puts "=> Booting Mongrel (use 'script/server webrick' to force WEBrick)"
+ when "thin"
+ puts "=> Booting Thin (use 'script/server webrick' to force WEBrick)"
end
%w(cache pids sessions sockets).each { |dir_to_make| FileUtils.mkdir_p(File.join(RAILS_ROOT, 'tmp', dir_to_make)) }
diff --git a/railties/lib/commands/servers/thin.rb b/railties/lib/commands/servers/thin.rb
new file mode 100644
index 0000000000..833469cab1
--- /dev/null
+++ b/railties/lib/commands/servers/thin.rb
@@ -0,0 +1,25 @@
+require 'rbconfig'
+require 'commands/servers/base'
+require 'thin'
+
+
+options = ARGV.clone
+options.insert(0,'start') unless Thin::Runner.commands.include?(options[0])
+
+thin = Thin::Runner.new(options)
+
+puts "=> Rails #{Rails.version} application starting on http://#{thin.options[:address]}:#{thin.options[:port]}"
+puts "=> Ctrl-C to shutdown server"
+
+log = Pathname.new("#{File.expand_path(RAILS_ROOT)}/log/#{RAILS_ENV}.log").cleanpath
+open(log, (File::WRONLY | File::APPEND | File::CREAT)) unless File.exist? log
+tail_thread = tail(log)
+trap(:INT) { exit }
+
+begin
+ thin.run!
+ensure
+ tail_thread.kill if tail_thread
+ puts 'Exiting'
+end
+