Skip to content

suzusime/sinanoki

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

sinanoki

「科の木(しなのき)」は、Wiki風編集インターフェースを備えた静的サイトジェネレータです。Rubyで書かれています。

Wiki風のWebインターフェースを持っているとはいえ、これに不特定多数のユーザーがアクセスできるような使い方は想定していません(セキュリティ上の問題があります)。自分一人がアクセスできるローカルマシンで動かすか、Webサーバーで認証をつけた中で動かすようにしてください。決して編集インターフェースを認証なしでインターネットから見える場所に露出させてはなりません。

使い方

依存ライブラリのインストール

Bundler が必要です。あらかじめインストールしておいてください。

Bundler のインストールが済んでいる場合、

$ bundle install --path vendor/bundle

で依存ライブラリをインストールできます。

初期化

最初に一度だけ行ってください。

$ cp conf.yaml.default conf.yaml # 設定ファイルの作成
$ bundle exec ruby init_repo.rb # データを保存するためのGitリポジトリを作成
$ bundle exec ruby copy_static_files.rb # cssやjs等のファイルを静的サイトの出力ディレクトリにコピー

srcrepo ディレクトリ以下に原稿ファイル用のリポジトリが作成されます。

起動

$ bundle exec ruby sinanoki.rb

で起動します。

http://localhost:4567 にアクセスしてください。

上の「編集」ボタンを押すとそのページを編集できます。

編集ページで「更新」を押すと、 srcrepo のGitリポジトリにMarkdownのファイルが生成され、自動でコミットされます。

静的ファイルの生成

公開サーバーで公開するための静的なファイルが、コミットと同時に dst ディレクトリに生成されます。この際、生成(更新)されるファイルは今更新したファイルだけです。

サイト全体を再生成したいときは、 http://localhost:4567/generate_all にアクセスしてください。 特に新しいページを作ったときは、これを行わないとリンク元のページに <未> が表示されたままになります。

静的ファイルのサーバーへのコピー(いわゆるデプロイ)

post-generation.rb という名前でRubyスクリプトを置いておくと、「静的ファイルの生成」の後にそのスクリプトが実行されます。

ここでrsyncなどを行うようにすると、サイトデータの更新後自動でサーバーにコピーさせることができます。

post-generation.rb の例:

#!/usr/bin/env ruby
system("rsync -av dst/ remoteserver:public_html/shoko/")

Markdown記法について

基本的には Redcarpet の対応している記法に従います。

以下の拡張があります。

  • [[pagename]] で、サイトの中の pagename という名前のページにリンクするWiki風記法
  • $\sin x$, $$\cos x$$ という記法でのTeX数式対応(KaTeXを利用)

リポジトリのフック

(これはsinanoki自体の機能ではありませんが)Gitリポジトリにpost-commitフックを仕込むことで、コミット時(=記事更新時)に何らかの動作をさせることができます。

たとえば、 srcrepo/.git/hooks/post-commit

#!/bin/sh
git push origin master

と書くと、記事リポジトリをリモートリポジトリにバックアップできます。

About

個人サイトジェネレータ「科の木」

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages