LoginSignup
9

More than 5 years have passed since last update.

勉強用に書く記事はqiitaとかブログに書くよりwiki化した方がいいかもしれない

Last updated at Posted at 2016-10-20

と思って、gollumを導入してみた話。

Qiita やブログじゃだめなのか?

  • Qiita / ブログに向いている記事

    • ぐぐっても解決しなかった事象の共有
    • XXを実装してみた事をドヤる記事
    • 新しい技術についてのまとめ
    • 自分なりの挑戦
  • 向いていない記事

    • 既知の事象
    • 備忘録
    • tutorial / getting started の焼き直し

Qiita / ブログに向いている記事と、向いていない記事があると思っており、毎回記事化するのもどうなんーって事で、勉強用に書くものや備忘録は、自分専用のwikiを立てて書けば良いんじゃないか。
wiki化するほうが体系化出来て後々見やすいんじゃないかと。

俺専用wikiを建てよう

ということで色々ぐぐって目をつけたのがGollumでした。Github Wikiに近い感覚で書くことが出来、markdownで記事を書くことが出来ます。これを立ててしまおう。

環境としては、AWS上にEC2インスタンスを立て、nginx + unicorn でデプロイしています。

導入は以下の記事を参考にしました。

公開用のディレクトリを作成し、以下のようなディレクトリ構成にしました。

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

個人でしか使わないので、コレで満足しています。

認証機構をもちょっとどうにかしたい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9