Tujuannya adalah untuk menjadi sangat permisif dalam menerima tambalan. Untuk hak istimewa komit, cukup kirimkan permintaan penarikan pertama Anda atau tanyakan di Arc Language Forum .
Pertama instal Racket (v7.7 atau lebih baru), lalu di terminal, jalankan:
$ raco pkg install sha
$ git clone http://github.com/arclanguage/anarki
$ cd anarki
Anda dapat memulai balasan interaktif dengan:
$ ./arc.sh
Atau mulai berita (dan balasannya) dengan:
$ cd apps/news
$ ./run-news
Jika Anda baru mengenal Arc , atau Lisp secara umum, titik awal yang baik adalah Tutorial .
Jika Anda mengalami masalah, periksa
(help)
di repl Anarki dibundel dengan News , aplikasi gaya Hacker News .
Untuk menjalankan News , pertama-tama pilih nama pengguna (admin) Anda,
$ cd anarki/apps/news
$ mkdir www
$ echo __username__ > www/admins
Anda dapat memiliki banyak admin. Tambahkan semuanya ke www/admins
, dipisahkan dengan spasi.
Peringatan : Jika Anda sudah menjalankan situs Berita , migrasi ke fork ini mungkin mengacaukan data situs Anda. Bicaralah dengan kami terlebih dahulu, dan pastikan untuk membuat cadangan sebelum migrasi.
Sekarang buka servernya,
$ ./run-news
Akan ada jeda saat server memuat, dengan beberapa pesan, lalu Anda akan melihat prompt arc>
.
Kunjungi http://localhost:8080. Klik login , dan buat akun untuk nama pengguna Anda. Anda sekarang harus masuk sebagai admin.
(Jangan khawatir tentang user break
atau error writing
pesan.)
Untuk menyesuaikan News , ubah variabel di bagian atas apps/news/news.arc
. Untuk mengubah port tempat server Anda berjalan, ubah apps/news/run-news.arc
.
Setiap perubahan interaktif pada prompt akan segera terlihat di server, tanpa perlu memulai ulang. Oleh karena itu, jika Anda membuat perubahan apa pun pada apps/news/news.arc
, Anda dapat memuatnya dengan mengetik (load "apps/news/news.arc")
di repl. Jika Anda menghentikan server atau mati karena alasan tertentu, perintah yang dimasukkan sebelumnya akan tersedia di riwayat perintah (setidaknya jika Anda telah menginstal Readline ).
Anda mungkin ingin menyajikan Berita dengan aman melalui HTTPS . Contoh konfigurasi untuk menjalankan Nginx dengan SSL sebagai proxy terbalik untuk News dapat ditemukan di anarki/extras/news.nginx.conf
.
Agar email pengaturan ulang kata sandi dapat dikirim, Anda harus menyiapkan akun email untuk mengirimkannya,
$ 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 memiliki tes otomatis yang menyeluruh.
# start in the anarki directory
$ ./arc.sh
arc> (load "tests.arc")
Anarki secara eksplisit tidak dibatasi untuk menjaga kompatibilitas dengan rilis upstream, dan status kompatibilitas dapat berubah secara liar dari komitmen ke komitmen tergantung pada siapa yang berminat. Untuk melihat daftar perbedaannya, ketik (incompatibilities)
di repl. Jika Anda membuat perubahan yang tidak kompatibel, perbarui daftar ini.
Siapapun boleh melakukan perubahan pada Anarki, tapi tolong pastikan tesnya terus berjalan. Karena kami mengandalkan test harness unit-test.arc, jalankan juga pengujiannya sebelum melakukan perubahan apa pun:
$ ./arc.sh (memerlukan 'lib/unit-test.arc/unit-test.arc) (memuat "unit-test.arc/tests.arc") (test-and-error-on-failure)
Ekspresi raket dapat dievaluasi dengan sintaks ($ ...)
. Misalnya, (($ crypto-random-bytes) 16)
memperoleh fungsi crypto-random-bytes
dari Racket dan melakukan panggilan ke fungsi tersebut.
Jika Anda menulis banyak kode Racket dan Anda hanya ingin menggunakan Anarki untuk bagian dari proyek yang lebih besar, Anda dapat raco pkg install anarki
dan menggunakan Anarki untuk menulis modul 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))
Perhatikan bahwa Anarki tidak memiliki cakupan modul pribadi; bagian (:provide ...)
hanya ada untuk memudahkan require
perpustakaan berbasis Anarki dari Racket .
Anarki memiliki beberapa masalah dalam meneruskan argumen kata kunci ke fungsi Racket , tetapi keyword-apply
Racket dapat digunakan untuk itu.