Aufrechterhaltung einer aktuellen Entwicklungsumgebung

Ich versuche, eine neue Dev-Maschine einzurichten, und Bundler fehlt. Ich schaue mir https://raw.githubusercontent.com/discourse/install-rails/master/linux an und sehe, dass es immer noch ruby_version="2.7.6" installiert. Und das erneute Ausführen dieses Skripts war nie eine sehr zuverlässige Methode, um eine Dev-Maschine zu aktualisieren.

Wie machen das andere? Benutzen wirklich alle Install Discourse for development using Docker?

Für die Entwicklung meines Dashboards übergebe ich eine Reihe von Einstellungen über die Befehlszeile mit einem Skript pfaffmanager-discourse, das auch das neueste Discourse herunterlädt und die Datenbank migriert. Ich schätze, ich kann das irgendwie auch in der Docker-Version unterbringen.

Denke ich nur altmodisch, dass ich eine native Dev-Instanz haben sollte, anstatt sie in Docker zu machen?

Ich benutze Ansible, um ständig neue Maschinen einzurichten. Das Einzige, was diesem Setup fehlt, ist ein Discourse-Dev-Skript. Würde das noch jemand wollen? Könnten wir es in den Kern verschieben, damit man einfach Discourse klonen und dann ein Playbook ausführen könnte, um Ruby und ImageMagick und was auch immer in den richtigen Versionen zu bekommen?

1 „Gefällt mir“

Soweit ich weiß, verwendet fast jeder im Entwicklungsteam eine native Entwicklungsumgebung.

Ich benutze asdf, um die Versionen für die vielen Werkzeuge zu verwalten, die ich benutze. Für mich ist es also nur ein

asdf install ruby 3.1.3
asdf local ruby 3.1.3

um Discourse in der neuen Ruby zum Laufen zu bringen.

Sehr nützlich für mich, da ich Discourse über Rubys hinweg benchmarke und das Ruby-Upgrade durchführe.

5 „Gefällt mir“

Ich bin vorerst zu einer Docker Compose-Lösung übergegangen, wobei ein Dockerfile den Build von Discourse bestimmt, an dem ich arbeite. Für grundlegende Dinge funktioniert dies bisher gut, ist aber offensichtlich etwas langsamer als eine direkte Ubuntu-Umgebung „on the metal“ …

2 „Gefällt mir“

Off-Topic, ja, sehr beeindruckt vom YJIT!!.. unterstützt Discourse Ruby 3.2 bereits vollständig?

4 „Gefällt mir“

Gibt es ein geheimes Repository, das sie alle verwenden, um die Dinge auf dem neuesten Stand zu halten?

Danke! asdf ist eine riesige Hilfe! Ich glaube, ich habe es schon einmal gesehen, wollte aber ein weiteres Paketverwaltungssystem vermeiden. Wenn es für Sie gut genug ist, bin ich dabei.

Und es sieht so aus, als ob nodejs im Installationsskript ebenfalls veraltet ist. Eine aktuelle Installation hat v18.12.1 und das Skript installiert 16.

Sieht also so aus:

          git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2
          asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
          asdf plugin add imagemagick
          asdf install imagemagick 7.1.0-55
          asdf plugin add nodejs
          asdf install nodejs 18.12.1

Angenommen, Sie bekommen das irgendwie in Ihre .bashrc (oder ähnliches):

. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash

Und die Installation dieser Gems:

      - bundler
      - discourse_theme
      - minitar
      - listen
      - rb-fsevent
      - rb-inotify
      - ffi
      - multipart-post
      - tty-prompt
      - pastel
      - tty-color
      - tty-reader
      - tty-screen
      - advancecomp
      - gifsicle
      - jpegoptim
      - libjpeg-progs
      - optipng
      - pngcrush
      - pngquant
      - jhead
      - rails

Einige davon habe ich vielleicht aus anderen Gründen als Discourse hinzugefügt, obwohl ich mir nicht ganz sicher bin.

Und

apt-get install -y git build-essential libxslt1-dev libcurl4-openssl-dev libksba8 \
libksba-dev libreadline-dev libssl-dev zlib1g-dev libsnappy-dev \
sqlite3 libsqlite3-dev postgresql postgresql-server-dev-all \
postgresql-contrib libpq-dev redis-server golang-go
go get github.com/mailhog/MailHog

(Wahrscheinlich nicht in dieser Reihenfolge) Kommt dem ziemlich nahe. Das aktuelle Redis, das mit Ubuntu geliefert wird, ist für 99 % der Entwickler gut genug (es ist 7.0.7 und nicht 6.x) Oh! 7.0.7 ist jetzt das, was enthalten ist. Aber es gibt auch ein asdf-Plugin für Redis.

Ein solches Skript wäre dann im Kern recht einfach zu pflegen, wenn es eine Versionsänderung bei Node, ImageMagick oder Ruby gäbe, und dann könnte ein fauler Entwickler dieses Skript einmal pro Woche oder bei jedem neuen Pull ausführen und hätte eine aktuelle Entwicklungsumgebung. Mit ein oder drei Stunden könnte jemand, der clever ist, es in ein paar Stunden plattformübergreifend für Linux, Mac/homebrew und Windows/WSL erstellen. Ich habe glücklicherweise keinen einfachen Zugang zu Windows mehr, daher melde ich mich nicht freiwillig.

Aber ich denke, wenn ich die Änderungen an discourse_docker beobachte, werde ich vielleicht bemerken, wann diese aktualisiert werden, und meine zusammengebastelten Ergänzungen zu meinem newmachine-Ansible-Playbook erledigen jetzt vielleicht die Aufgabe.

Danke für den Tipp! Ich denke, ich kann jetzt mit einem einzigen Befehl eine Entwicklungsumgebung auf jedem Rechner einrichten.

1 „Gefällt mir“

Obwohl ich sehen kann, wie cool es wäre, wenn das alles automatisch erledigt würde, ist die Verwaltung meiner Entwicklungsumgebung, Updates und allem anderen für mich ein wesentlicher Bestandteil der Arbeit.

Es ist schlecht für Neulinge, und hier glänzen Tools wie GitHub Codespaces, aber für Leute, die sich täglich mit der Entwicklung von Discourse beschäftigen, ist das Verständnis und die Fähigkeit, die Entwicklungsumgebung zu manipulieren, hilfreich, um zu verstehen, wie die Teile zusammenpassen.

2 „Gefällt mir“

Nun, der Typ, der Ruby-Benchmarks durchführt, ist weit davon entfernt, ein typischer Entwickler zu sein, aber das ist in Ordnung! Ich schätze, wir sind alle ein bisschen anders darin, wie wir Dinge gerne verwalten.\n\nDank deiner asdf-Empfehlung glaube ich, dass ich damit auf meinen verschiedenen Maschinen den Überblick behalten kann.

1 „Gefällt mir“

Ich habe die meiste Kompatibilitätsarbeit bereits beim 3.1-Push erledigt, sodass wir für die Umstellung auf 3.2 bereits bestens gerüstet sind und dies bald tun werden.

4 „Gefällt mir“

Falco, könnte ich das mit dir überprüfen?

rake dev:populate

scheint jetzt einen Fehler zu produzieren:

Psych::DisallowedClass: Tried to load unspecified class: Date

Hat das mit einer neuen Ruby- oder Rails-Version zu tun?

Mehr:

Ich frage mich, wie sehr sich TTFB mit dem neuen YJIT verbessern wird

1 „Gefällt mir“

Dieses Problem scheint in der neuesten Version behoben zu sein, danke an denjenigen, der es behoben hat! :pray: Es ist eine kritische Funktion, die hilft, Testdaten effizient zu erstellen.

1 „Gefällt mir“

Dieses Thema wurde 30 Tage nach der letzten Antwort automatisch geschlossen. Neue Antworten sind nicht mehr zulässig.