[編集]

Hiki

タグ :Ruby

Rubyで作られたWikiエンジン、Hikiについての備忘録的なもの。あるいは、作ったor改造したプラグインなど。
(今は使っていないけれど、削除するのも勿体無いしね…)

[編集]

添付プラグイン関連

[編集]

添付ファイルサイズ

  • 添付ファイルサイズの制限値を設定するには、hikiconf.rbに以下のように記入する。
    • 単位はByte。
  • 設定されていない場合はデフォルト値として1MB(=1048576)になる。
    # この例では制限サイズが10MBになる。&br;
    @options['attach_size'] = 10 * 1024 * 1024
    
[編集]

添付時にアップロードはできるがエラーになる

  • ファイルを添付しようとすると、アップロード自体は成功するが、以下のようなエラーメッセージが表示されてしまう場合。

    対象のコンピュータによって拒否されたため、接続できませんでした。 - connect(2)

  • これは、更新時に更新通知メールを送ろうとしているが設定に問題あるなどして、問題が発生していることによるもの。
    • SMTPサーバへのアクセスに失敗している?
    • 更新通知メール送信のための設定を見直すか、通知をさせなければ回避できる。
[編集]

添付できない(Windows)

  • Windowsで添付プラグインを使う場合、「C:\tmp」が無いとバイナリファイル(?)の添付時にエラーになる。
    • Ruby標準添付ライブラリのtempfile.rbの仕様で、
      $SAFE = 0 で無い場合は一時ファイルを/tmp(=C:\tmp)に作ろうとするため。
      $SAFE = 0 にすれば、環境変数TEMPの所に作られるのでエラーにならない。
    • もちろん「C:\tmp」を作成してしまってもよい。
[編集]

添付画像が表示できない(Windows)

  • Windows環境のみかはわからないが、添付した画像が開けない。
    • 画像だけでなく、バイナリファイルは全て正常にダウンロードできていない?
  • なんだか、RubyのFile.readに原因がありそうな気もする。直接参照した方が確実かも。
  • hikiconf.rbで @options['attach.cache_url'] = (添付ファイルフォルダへのパス) を設定すれば、
    attach_image_anchorでattach.cgiを介さずに直接画像ファイルを参照する仕組みがある。
  • それを流用すれば対処可能。
    それとは別に、Windowsだと標準文字コードがShift_JISな関係で、全角のファイル名だとアクセスできない模様。
    • 半角のファイル名限定にするか、これまたソースの修正が要る。
  • ダウンロード
[編集]

作ったor改造したプラグイン

[編集]

referer.rb修正

  • 標準プラグインの referer.rb を以下のように修正した。
    • misc/plugin/referer.rbを上書きすればOK。
  • @options['referer.omit_url'] に除外URLを設定しても、過去Refererデータは残ったままなので、
    表示時にも @options['referer.omit_url'] をチェックするようにした。
    • ただし @options['referer_limit'] には対応していないので設定値より表示数が少なくなるかも。
  • make_anchor の引数に "external" を加えて外部リンクプラグインに対応するようにした。
  • URLに日本語などが入っている場合に文字化けするのでエンコード処理を加えた。
  • ダウンロード
[編集]

パンくずリストプラグイン修正

  • パンくずリストプラグインを以下のように修正した。
  • 自分自身のページもリスト対象にするようにした。(自分自身はリンクしない)
  • その際、リストが変(例:親ページ>子ページ>孫ページ>)になったので修正した。
  • 表示スタイルで表示フォントサイズを少し大きくし、右寄せにした。
  • ダウンロード
[編集]

外部リンクプラグイン

  • 外部リンク時にtarget="_blank"指定するプラグイン。
  • plugin/00default.rb の make_anchor を変えればいけそう。
    • class="external"かどうかで外部リンクを判断できるようなので、make_anchorを再定義。
    • これをpluginフォルダに置けばOK。
if !defined?(make_anchor_o)
    alias make_anchor_o make_anchor
end

def make_anchor(url, display_text, a_class = nil)
    if a_class == "external"
        %Q!<a href="#{url}" class="#{a_class}" target="_blank">#{display_text}</a>!
    else
        make_anchor_o(url, display_text, a_class)
    end
end
[編集]

見出し編集プラグイン

【注意】
ページ編集機能を変更している為、不具合などによりページ内データが消去される可能性があります。
このプラグインは自己責任で使用して下さい。
もし消えたとしても当方は責任を持ちません。
  • メニューのページ単位の編集とは別に、見出し(行頭で「!」から始まるもの)単位で編集可能にする。
    • 例として、見出しレベル2(!!)を編集しようとした場合、次の見出しレベル2以下(!、!!)までの部分を編集できる。
    • 本文の</hN>の後ろに編集リンクを置く。
    • ただし、編集可能かどうかのチェックをここで行えず、権限が無くてもリンクが表示されてしまう。
      (編集画面に移動する際に PermissionError になるので取り敢えず問題なし。)
  • 編集対象の見出しレベルを管理メニューで変更できる
  • 保存処理時にデータを渡すためにedit.htmlの修正が必要。
  • sec_edit.rb を plugin フォルダに置き、edit.html を template フォルダに置けば(上書きする)動くはず。
    • Windows/WebRickのテスト環境ではsec_edit.rbとedit.htmlで動作確認できたが、
      linux/Apatch環境ではhiki/command.rb のHiki::Commandクラスの再定義部分でUndefinedMethodエラーになった。
    • sec_edit.rbを置いて動かない場合は、sec_edit.rb の後半の再定義部分を hiki/command.rb に組み込んで下さい。
      それでも動かない場合は、ちょっと手に負えません。
  • ダウンロード(2009/10/06 update)
[編集]

その他

[編集]

WEBRickでHikiを使う

  • Hikiインストールメモ - バリケンのRuby日記 - Rubyist
  • Windowsで添付プラグインを使う場合、「C:\tmp」が無いとバイナリファイル(?)の添付時にエラーになる。
    • Ruby標準添付ライブラリのtempfile.rbの仕様で、$SAFE = 0 で無い場合は一時ファイルを/tmp(=C:\tmp)に作ろうとするため。
      $SAFE = 0 にすれば、環境変数TEMPの所に作られるのでエラーにならない。
  • Windows環境のみかはわからないが、添付した画像が開けない。
    • 画像だけでなく、バイナリファイルは全て正常にダウンロードできていない?
[編集]

cssを更新させる

  • 別にHikiに限ったことではないが…
    クライアント上にcssのキャッシュが残っていると、cssをサーバ上で更新しても変更が反映されない場合がある。
  • クライアントマシンのキャッシュを削除すれば次回更新時に反映されるが、閲覧者全員にそれをお願いするのは忍びない。
    • Ctrl+F5 で強制的に更新するスーパーリロードなるものもあると知った。キャッシュ削除よりは手間はかからないが。
    • HTMLソース上のcssへのリンク記述でcssファイル名?任意文字列の形で記述すると別のキャッシュと見なされる。
      更新時に任意文字列の部分を変更すれば正しく反映される寸法である。
    • Hikiで、cssリンク部分を記述しているのは \plugin\00default.rb である。
<link rel="stylesheet" type="text/css" href="theme/hiki_wm2/hiki_wm2.css" media="all">

↓

<link rel="stylesheet" type="text/css" href="theme/hiki_wm2/hiki_wm2.css?20081209" media="all">