EN /HU | Belépés

Minimális projekt

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.

Fájlok

TEXT
quiz-bbs/
├── Gemfile
├── bbs.rb
├── Dockerfile
└── compose.yaml

Gemfile

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.

RUBY
source 'https://rubygems.org'

gem 'bbs', git: 'https://git.teletypegames.org/engines/rubbs.git', tag: 'v1.1.0'

bbs.rb

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.

RUBY
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

Dockerfile

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.

DOCKERFILE
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"]

compose.yaml

A board a konténerben a 2323-on figyel; a ports bal oldala a port a saját gépeden.

YAML
services:
  quiz-bbs:
    build: .
    ports:
      - "2323:2323"
    restart: unless-stopped

Futtatás

Dockerrel (Windows, Linux, macOS)

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:

TEXT
docker compose up -d --build

Leállítás: docker compose down.

Docker nélkül (Linux, macOS)

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
TEXT
bundle install
bundle exec ruby bbs.rb

A Ctrl-C leállítja a szervert. Windowson Dockerrel, vagy WSL-ben a linuxos parancsokkal futtasd.

A board hívása

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
TEXT
     ____        _          ____  ____ _____
    / __ \__  __(_)___     / __ )/ __ ) ___/
   / / / / / / / /_  /    / __  / __  \__ \
  / /_/ / /_/ / / / /_   / /_/ / /_/ /__/ /
  \___\_\__,_/_/ /___/  /_____/_____/____/

  What is 2 + 2?: 4
  Correct!
  Which year did the C64 come out?: 1984
  Wrong, it is 1982.

  Bye!

Lásd még

  • Első lépések — minden konfigurációs kulcs, egy valódi board szerkezete, az éles Dockerfile
  • Flow — a párbeszéd-DSL minden lépése
  • rubbs — a főoldal