パッチの受け入れを非常に寛容にすることが目的です。コミット権限については、最初のプル リクエストを送信するか、 Arc Language Forumで質問してください。
まずRacket (v7.7 以降) をインストールし、ターミナルで次のコマンドを実行します。
$ raco pkg install sha
$ git clone http://github.com/arclanguage/anarki
$ cd anarki
インタラクティブな repl は次のコマンドで開始できます。
$ ./arc.sh
または、ニュース (およびリプ) を次のように開始します。
$ cd apps/news
$ ./run-news
ArcやLisp全般を初めて使用する場合は、 Tutorial から始めるのが良いでしょう。
困ったときは要チェック
(help)
と入力します。 Anarki には、 Hacker NewsスタイルのアプリであるNewsがバンドルされています。
News を実行するには、まず自分 (管理者の) ユーザー名を選択します。
$ cd anarki/apps/news
$ mkdir www
$ echo __username__ > www/admins
複数の管理者を持つことができます。これらをすべて空白で区切ってwww/admins
に追加します。
警告:すでにニュースサイトを運営している場合、このフォークに移行するとサイトのデータが台無しになる可能性があります。まずはご相談ください。移行前に必ずバックアップを作成してください。
ここでサーバーを起動し、
$ ./run-news
サーバーのロード中は一時停止し、いくつかのメッセージが表示されます。その後、 arc>
プロンプトが表示されます。
http://localhost:8080 に移動します。 [ログイン]をクリックし、ユーザー名のアカウントを作成します。これで、管理者としてログインしているはずです。
( user break
やメッセージerror writing
について心配する必要はありません。)
Newsをカスタマイズするには、 apps/news/news.arc
の先頭にある変数を変更します。サーバーが実行されているポートを変更するには、 apps/news/run-news.arc
変更します。
プロンプトに対する対話型の変更は、サーバーを再起動することなく、直ちにサーバーに反映されます。したがって、 apps/news/news.arc
に変更を加えた場合は、repl に(load "apps/news/news.arc")
と入力することで変更をロードできます。サーバーを停止するか、サーバーが何らかの理由で停止した場合、以前に入力したコマンドがコマンド履歴で利用可能になります (少なくともReadline がインストールされている場合)。
HTTPS経由でニュースを安全に配信したい場合があります。 Newsのリバース プロキシとしてSSLを使用してNginx を実行するための設定例はanarki/extras/news.nginx.conf
にあります。
パスワードリセットメールを送信するには、送信元のメールアカウントを設定する必要があります。
$ echo "[email protected]" > www/app-email ; email
$ echo "smtp.example.com" >> www/app-email ; smtp server
$ echo "[email protected]" >> www/app-email ; user
$ echo "1234" >> www/app-email ; password
Anarki には徹底的な自動テストがあります。
# start in the anarki directory
$ ./arc.sh
arc> (load "tests.arc")
Anarki は、アップストリーム リリースとの互換性を維持するように明示的に制約されておらず、互換性ステータスは、誰が関心を持つかによって、コミットごとに大きく変動する可能性があります。相違点のリストを表示するには、repl に(incompatibilities)
と入力します。互換性のない変更を行った場合は、このリストを更新してください。
誰でも Anarki に変更を加えることができますが、テストが引き続き合格することを確認してください。ここでは、unit-test.arc テスト ハーネスに依存しているため、変更をコミットする前にそのテストも実行してください。
$ ./arc.sh (「lib/unit-test.arc/unit-test.arc」が必要) (「unit-test.arc/tests.arc」をロード) (失敗時のテストとエラー)
Racket式は($ ...)
構文で評価できます。たとえば、 (($ crypto-random-bytes) 16)
は、Racketからcrypto-random-bytes
関数を取得し、それを呼び出します。
大量のRacketコードを作成し、より大きなプロジェクトの一部にAnarki を使用したい場合は、 raco pkg install anarki
、 Anarki を使用してRacketモジュールを作成できます。
#lang anarki
(:provide function-for-use-in-racket)
(= racket-import ($.dynamic-require ...))
(load "relative/path.arc")
(def utility-for-use-in-racket (x)
(* x (racket-import x))
Anarki にはプライベート モジュール スコープがないことに注意してください。 (:provide ...)
セクションは、 RacketからAnarkiベースのライブラリを簡単にrequire
ようにするためにあります。
Anarki には、キーワード引数をRacket関数に渡すときにいくつかの問題がありますが、それにはRacketのkeyword-apply
を使用できます。