A legkisebb teljes rubbs-projekt: egy board, ami feltesz két kérdést, és megmondja, jó-e a válasz. Négy fájl, semmi elhagyható. A rubbs 1.1.0 alapján. Ami a minimumon túl van, az az Első lépések oldalon.
quiz-bbs/
├── Gemfile
├── bbs.rb
├── Dockerfile
└── compose.yaml
A gem neve bbs, és a saját Git-szerverünkről jön, nem a rubygems.org-ról. A tag egy kiadáshoz köt.
source 'https://rubygems.org'
gem 'bbs', git: 'https://git.teletypegames.org/engines/rubbs.git', tag: 'v1.1.0'
Ez az egész board. Az ask beolvas egy sort a contextbe a megadott néven, a text kiírja a blokk visszatérési értékét, és amikor a lépések elfogynak, a szerver bontja a vonalat.
require 'bbs'
QUESTIONS = {
'What is 2 + 2?' => '4',
'Which year did the C64 come out?' => '1982'
}.freeze
BBS.configure do |c|
c.flow = BBS::Flow.define do
big_banner 'Quiz BBS'
QUESTIONS.each_with_index do |(question, answer), i|
ask :"answer#{i}", prompt: question
text { |ctx| ctx[:"answer#{i}"] == answer ? 'Correct!' : "Wrong, it is #{answer}." }
end
pause 'Bye!', seconds: 2
end
end
BBS.start
A git a gem letöltéséhez kell, a build-base a sqlite3 natív kiterjesztésének fordításához, amire a rubbs épít.
FROM ruby:3.3-alpine
RUN apk add --no-cache git build-base
WORKDIR /app
COPY Gemfile ./
RUN bundle install
COPY bbs.rb ./
EXPOSE 2323
CMD ["bundle", "exec", "ruby", "bbs.rb"]
A board a konténerben a 2323-on figyel; a ports bal oldala a port a saját gépeden.
services:
quiz-bbs:
build: .
ports:
- "2323:2323"
restart: unless-stopped
Telepítsd a Dockert: Windowson és macOS-en a Docker Desktop-ot (macOS-en az OrbStack is jó), Linuxon a Docker Engine-t a compose pluginnal. Utána a projekt mappájában:
docker compose up -d --build
Leállítás: docker compose down.
Ruby 3.2 vagy újabb, Git és C-fordító kell.
| OS | Telepítés |
|---|---|
| macOS | xcode-select --install, aztán brew install ruby |
| Debian / Ubuntu | sudo apt install ruby-full build-essential git |
bundle install
bundle exec ruby bbs.rb
A Ctrl-C leállítja a szervert. Windowson Dockerrel, vagy WSL-ben a linuxos parancsokkal futtasd.
Bármilyen telnetkliens jó; a cím localhost, a port 2323.
| OS | Kliens |
|---|---|
| Windows | A beépített klienst egyszer be kell kapcsolni: dism /online /Enable-Feature /FeatureName:TelnetClient (rendszergazdai parancssorban), aztán telnet localhost 2323. Vagy PuTTY, Telnet kapcsolattípussal. |
| macOS | brew install telnet, aztán telnet localhost 2323 |
| Linux | sudo apt install telnet, aztán telnet localhost 2323 |
____ _ ____ ____ _____
/ __ \__ __(_)___ / __ )/ __ ) ___/
/ / / / / / / /_ / / __ / __ \__ \
/ /_/ / /_/ / / / /_ / /_/ / /_/ /__/ /
\___\_\__,_/_/ /___/ /_____/_____/____/
What is 2 + 2?: 4
Correct!
Which year did the C64 come out?: 1984
Wrong, it is 1982.
Bye!