と思って、gollumを導入してみた話。
Qiita やブログじゃだめなのか?
-
Qiita / ブログに向いている記事
-
ぐぐっても解決しなかった事象の共有
-
XXを実装してみた事をドヤる記事
-
新しい技術についてのまとめ
-
自分なりの挑戦
-
向いていない記事
-
既知の事象
-
備忘録
-
tutorial / getting started の焼き直し
Qiita / ブログに向いている記事と、向いていない記事があると思っており、毎回記事化するのもどうなんーって事で、勉強用に書くものや備忘録は、自分専用のwikiを立てて書けば良いんじゃないか。
wiki化するほうが体系化出来て後々見やすいんじゃないかと。
俺専用wikiを建てよう
ということで色々ぐぐって目をつけたのがGollumでした。Github Wikiに近い感覚で書くことが出来、markdownで記事を書くことが出来ます。これを立ててしまおう。
環境としては、AWS上にEC2インスタンスを立て、nginx + unicorn でデプロイしています。
導入は以下の記事を参考にしました。
- https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=gollum
- http://qiita.com/tatzyr/items/5ea6328719d72135c6c3
公開用のディレクトリを作成し、以下のようなディレクトリ構成にしました。
wiki
|-Gemfile
|-config
|-unicorn.rb
|-config.ru
config.ru にgollumの設定(というか拡張)を記載し、basic認証を追加します。
ポイントとしては、
- 閲覧は誰でも出来る
- 書き込みだけ自分しかしない。
という形にしたかったので、以下のような実装になりました。
# !/usr/bin/env ruby
require 'rubygems'
require 'sinatra'
require 'gollum/app'
module Precious
class App < Sinatra::Base
['/create/*', '/edit/*', 'uploadFile', '/deleteFile/*', '/rename/*', '/delete/*', '/revert/*'].each do |path|
before path do
authenticate!
end
end
helpers do
def authenticate!
@auth ||= Rack::Auth::Basic::Request.new(request.env)
if @auth.provided? && @auth.basic? && @auth.credentials ==['admin','password']
puts("authenticate!")
else
response['WWW-Authenticate'] = %(Basic realm="Gollum Wiki")
throw(:halt, [401, "Not authorized\n"])
end
puts("test")
end
end
end
end
gollum_path = File.expand_path(File.dirname(__FILE__))
wiki_options = {:universal_toc => false}
Precious::App.set(:gollum_path, gollum_path)
Precious::App.set(:default_markup, :markdown)
Precious::App.set(:wiki_options, wiki_options)
run Precious::App
What's next
個人でしか使わないので、コレで満足しています。
認証機構をもちょっとどうにかしたい。