Octopress - Preview 時の Web サーバを thin に変更!

Updated:


Octopress の preview 時に起動する Web サーバ WEBrick をより速度が速いと言われている(?) thin に変更する方法についての記録です。

0. 前提条件

  • 作業する環境(OS)は、Linux Mint 13 Maya (64bit)
  • Ruby 1.9.3-p194
  • Octopress 2.0

1. Gemfile 編集

Gemfilegroup :development do 内に以下を追加する。

File: Gemfile

1
2
 
gem "thin", "~> 1.5.0"

2. thin パッケージインストール

RubyGems パッケージの thin をインストールする。

$ bundle install

3. Rakefile 編集

今までどおり rake preview で thin が起動するように、Rakefiletask :preview do 部分を以下のように編集する。
(念の為、変更前の状態をコメントアウトして残している)

File: Gemfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
diff --git a/Rakefile b/Rakefile
index fd7e611..0e566a2 100644
--- a/Rakefile
+++ b/Rakefile
@@ -79,18 +79,22 @@ end
 desc "preview the site in a web browser"
 task :preview do
   raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
-  puts "Starting to watch source with Jekyll and Compass. Starting Rack on port #{server_port}"
+  #puts "Starting to watch source with Jekyll and Compass. Starting Rack on port #{server_port}"
+  puts "Starting to watch source with Jekyll and Compass. Starting Thin on port #{server_port}"
   system "compass compile --css-dir #{source_dir}/stylesheets" unless File.exist?("#{source_dir}/stylesheets/screen.css")
   jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll --auto")
   compassPid = Process.spawn("compass watch")
-  rackupPid = Process.spawn("rackup --port #{server_port}")
+  #rackupPid = Process.spawn("rackup --port #{server_port}")
+  thinPid = Process.spawn("thin start --port #{server_port}")
 
   trap("INT") {
-    [jekyllPid, compassPid, rackupPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH }
+    #[jekyllPid, compassPid, rackupPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH }
+    [jekyllPid, compassPid, thinPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH }
     exit 0
   }
 
-  [jekyllPid, compassPid, rackupPid].each { |pid| Process.wait(pid) }
+  #[jekyllPid, compassPid, rackupPid].each { |pid| Process.wait(pid) }
+  [jekyllPid, compassPid, thinPid].each { |pid| Process.wait(pid) }
 end
 
 # usage rake new_post[my-new-post] or rake new_post['my new post'] or rake new_post (defaults to "new-post")
~

4. preview 起動

今までどおり、preview を起動してみる。

$ rake preview
Starting to watch source with Jekyll and Compass. Starting Thin on port 4000
>> Using rack adapter
Configuration from /home/masaru/octopress/_config.yml
/home/masaru/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/blankslate-3.1.2/lib/blankslate.rb:51: warning: undefining `object_id' may cause serious problems
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4000, CTRL+C to stop

Dear developers making use of FSSM in your projects,
FSSM is essentially dead at this point. Further development will
be taking place in the new shared guard/listen project. Please
let us know if you need help transitioning! ^_^b
- Travis Tilley

>>> Compass is polling for changes. Press Ctrl-C to Stop.
Auto-regenerating enabled: source -> public/octopress
[2012-12-08 18:48:40] regeneration: 6817 files changed

thin で起動していることが分かる。

参考サイト


実際に、速度を測定してはいないのですが、若干早くなったようには感じます。

以上。





 

Sponsored Link

 

Comments