Skip to content
個人サイトジェネレータ「科の木」
JavaScript CSS Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
public
views
.gitignore
Gemfile
Gemfile.lock
LICENSE
README.md
conf.yaml.default
copy_static_files.rb
init_repo.rb
sinanoki.rb

README.md

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

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

You can’t perform that action at this time.