AsakusaSatellite は、環境変数 FILTER_NAME に指定された名前のファイルを <AS_ROOT>/config/ 配下から読み込み、プラグインの設定を行います。 環境変数 FILTER_NAME が指定されない場合には、filter_intra.yml というファイルが利用されます。 このファイルは、イントラネットで AsakusaSatellite をご利用いただくのに適した設定になっています。
以下ではそのファイルの内容についての説明をします。
<AS_ROOT>/plugins/ 配下に置かれたプラグインは、基本的にすべて有効になります。 フィルタは、適用される順序を指定することができます。 フィルタとは、メッセージを加工するためのプラグインで、 AsakusaSatellite::Filter::Base を継承したものです。
設定ファイルの内容は例えば以下のようになります。
- name: code_highlight_filter
- name: quote_it
- name: redmine_ticket_link
- name: twitter_link
- name: emoji_filter
値にはフィルタのクラス名をスネークケースに変換したものを指定します。 メッセージの加工は、上から書かれた順に実行されます。 設定ファイルに書かれなかったフィルタは適用されません。
<AS_ROOT>/plugins/ 配下に置かれたプラグインは、置くだけでは有効になりません。 設定ファイルにプラグインを記述することで初めて有効になります。
設定ファイルの内容は例えば以下のようになります。
info:
version: 2
filters:
- name: code_highlight_filter
- name: auto_link
- name: redmine_ticket_link
- name: twitter_link
- name: emoji_filter
plugins:
- dir: as_twitterauth_plugin
filters には、v0.8.0 以前でも設定したように、フィルタの適用順序を記載します。 plugins には、フィルタではないプラグインの中で有効にしたいプラグインを指定します。 フィルタではないプラグインとは、ビューフックや認証プラグインのことを指します。
プラグインの指定方法は二種類あります。
dir キーを指定した場合には、プラグインのディレクトリ名を指定します。
plugins:
- dir: as_twitterauth_plugin
name キーを指定した場合には、フィルタのクラス名をスネークケースに変換したものを指定します。 ただしこの場合、プラグインのディレクトリ名は、 as_<フィルタのクラス名をスネークケースに変換したもの> という名前になっている必要があります。 この規約が守られていない場合も、以下の例のように name と dir を同時に指定することでディレクトリを指定して、フィルタを有効にすることができます。
filters:
- name: auto_link
dir: as_autolink
なお、v0.8.1 以降でも v0.8.0 の設定ファイルのフォーマットを利用することができます。 その場合は、プラグインの読み込みの挙動は v0.8.0 と同等の動きをします。
config/filter_intra.yml に以下を記述します
- dir: as_desktopnotification
また、部屋ごとに通知の有効無効を設定できます。 画面右上のログインユーザのリンクをクリックし、 Settings for each rooms で部屋名の右のボタンをクリックしてください。
#数字 を Redmine のチケットへのリンクに変換します。 API アクセスキーが設定されている場合は、チケットの名前を自動で付加します。 また、メッセージの内容を Redmine に投稿するためのリンクを各メッセージに付加します。
config/filter_intra.yml に以下を記述します
- name: redmine_ticket_link
また部屋の設定画面からRedmineのルートURL、APIアクセスキー、チケットを作成するプロジェクトを指定できます。 APIアクセスキーはRedmineの”個人設定 > API アクセスキー”から確認できます。
ソースコードをハイライトします。 記法は
例えば,
ruby::
puts "Hello World!"
と記述することで、2行目がハイライトして表示されます。
また、Graphviz の dot 記法もサポートしています。
graphviz::
digraph{A->B->C->A}
のように、 graphviz:: に続けて dot 記法を記述することで 簡単なグラフを描画することができます。
メッセージ中の :絵文字名: を画像として展開します。 また、メッセージを入力中に ”:” を入力すると、利用可能な絵文字をサジェストします。
config/filter_intra.yml に以下を記述します
- name: emoji_filter
利用可能な絵文字の一覧は、 Emoji cheat sheet をご参照ください。
ルールベースでメッセージの変換を定義し、画像として展開します。
- name: emoticon_filter
rule.yml は yaml 形式でキーにメッセージの変換対象、値に変換後に表示するファイル名を記述します。
例えば、rule.yml に
- (test): test.gif
と記述した場合は <AS_ROOT>/public/emoticons/test.gif に画像ファイルを保存し、メッセージ中に (test) と記述することで画像が展開されます。
すべてのページに指定されたスタイルシート・Javascriptを挿入することで、簡単に機能拡張できるようにします。
AsakusaSatellite は Twitter の OAuth を用いて認証を行いますが、 本プラグインを有効にすると、ローカルのユーザリストを用いた認証に切り替えます。
config/filter_intra.yml の plugins 要素の下に以下を記述します
- dir: as_localauth_plugin
<AS_ROOT>/config/settings.yml に以下を記述します。 本設定を行うことにより、Twitter の OAuth による認証は無効になり、 ローカル認証が有効になります。
omniauth:
provider: "local"
次に、ユーザリストにユーザを追加します。 ユーザリストは以下のファイルです。
<AS_ROOT>/plugins/as_localauth_plugin/config/users.yml
内容は以下の形式です。
testuser1:
screen_name: Test User1
password: b444ac06613fc8d63795be9ad0beaf55011936ac
profile_image_url: http://example.com/test1_user.png
ユーザリストは YAML 形式で記述します。
testuser1 の部分 にはユーザ ID を記述します。
screen_name はユーザの表示名を記述します。
password にはパスワードの SHA-1 ハッシュを記述します。 SHA-1 ハッシュの生成は、以下のコマンドで行うことができます。
$ ruby <AS_ROOT>/plugins/as_localauth_plugin/script/gen_sha1 <PASSWORD>
profile_image_url にはユーザのアイコンの URL を記述します。 データ URI スキームも指定することもできます。 testuser2 の例を参考にしてください。
AsakusaSatellite の認証を Redmine の API アクセスキーによる認証に切り替えます。
config/filter_intra.yml の plugins 要素の下に以下を記述します
- dir: as_redminelauth_plugin
<AS_ROOT>/config/settings.yml に以下を記述します。
omniauth:
provider: 'redmine'
provider_args:
- 'Redmine の URL'
- RedmineのAPIアクセスキー
- AsakusaSatellite で使用するユーザ名
- AsakusaSatellite で使用する画像の URL
このプラグインで認証されたユーザは、ユーザ ID として Redmine のユーザの メールアドレス が保存されます。 したがって、private に設定された部屋にこのプラグインで認証されたユーザを追加する場合は、Redmine のユーザの メールアドレス を指定する必要があります。
AsakusaSatellite を Heroku にデプロイした場合、 Heroku の制限により、ファイルアップロード機能が利用できません。
そこでストレージサービスの汎用インタフェースである Watage を利用し、添付ファイルをDropboxなどのクラウドストレージ上に保存するプラグインです。
Watage の詳細については、 Watage のドキュメント を参照ください。
config/filter_intra.yml の plugins 要素の下にに以下を記述します
- dir: as_watage_plugin
token/secret tokenをWatageから取得した上で、config/settings.yml に以下を記述します。
attachment_policy: watage
attachment_path: <WatageのURL(例: http://watage.examlpe.com/)>
watage_token: <your watage token>
watage_token_secret: <your watage token secret>