Discourse auf macOS für die Entwicklung installieren

:warning: Diese Anleitung behandelt die Installationsanweisungen für eine macOS-Entwicklungsumgebung. Für Anleitungen zur Produktionsserver-Installation siehe: Install Discourse in production with the official supported instructions

Möchtest du Discourse auf macOS einrichten, um daran zu arbeiten und zu entwickeln?

Wir gehen davon aus, dass Ruby/Rails/Postgres/Redis noch nicht auf deinem Mac installiert sind. Fangen wir an :rocket: !

Installation der Discourse-Abhängigkeiten

Du benötigst folgende Pakete auf deinem System:

optional

Starte dein Terminal neu

Nachdem wir die Discourse-Abhängigkeiten installiert haben, gehen wir zur Installation von Discourse selbst über.

Terminal neu starten

Beende deine Shell und starte sie neu, um sicherzustellen, dass die Pfade zu den installierten Paketen korrekt vom Terminal erkannt werden.

Discourse klonen

Klone das Discourse-Repository im Ordner ~/discourse:

git clone https://github.com/discourse/discourse.git ~/discourse

~ steht für den Home-Ordner, sodass der Discourse-Quellcode in deinem Home-Ordner verfügbar sein wird.

Discourse initialisieren

Wechsle in deinen Discourse-Ordner:

cd ~/discourse

Installiere die benötigten Gems:

bundle install

Installiere die JS-Abhängigkeiten:

pnpm install

Führe nun folgende Befehle aus, um deine lokale Discourse-Instanz einzurichten:

bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

Starte die Rails- und Ember-Server. Du hast hier zwei Möglichkeiten.

Option 1: Verwende zwei separate Terminal-Tabs/Fenster und starte Rails und Ember CLI separat über:

bundle exec rails server

und

bin/ember-cli

Option 2: Verwende nur ein Terminal-Fenster:

bin/ember-cli -u # startet den Pitchfork-Server im Hintergrund

:tada: Du solltest jetzt in der Lage sein, http://localhost:4200 aufzurufen, um deine lokale Discourse-Installation zu sehen. (Beachte, dass der erste Ladevorgang bis zu einer Minute dauern kann, da der Server erst initialisiert wird.)

Du kannst auch versuchen, die Tests auszuführen:

bundle exec rake autospec

Alle (oder fast alle) Tests sollten erfolgreich durchlaufen.

Neuer Administrator erstellen

Um einen neuen Administrator zu erstellen, führe folgenden Befehl aus:

RAILS_ENV=development bundle exec rake admin:create

Folge den Aufforderungen, um ein Administratorkonto zu erstellen.

E-Mail konfigurieren

Starte MailHog:

mailhog

Glückwunsch! Du bist jetzt Administrator deiner eigenen Discourse-Installation!

Viel Spaß beim Entwickeln! Um damit zu beginnen, lies die Anleitung für Anfänger zur Erstellung von Discourse-Plugins.


Dieses Dokument wird versionskontrolliert – schlage Änderungen auf GitHub vor.

78 „Gefällt mir“
Setup discourse on Mac OS
Running Discourse on Docker for Mac
Localhost:3000/users gives no-results
How to install Discourse on windows
How to install Discourse locally?
Best dev installation method for running on macOS?
Please help, how do I install Discourse on macOS?
Local installation internal use only
Help me setup my Discourse development environment
Discourse standalone
Migrate a NodeBB forum with Redis to Discourse
Starting discourse fails with bootstrap error
Error after cleaning tmp folder
MacOS Installation Gem::FilePermissionError
UndefinedTable: ERROR: relation "web_hook_event_types" when trying to run rspec test
[Need help][MacOS M1 dev installation] ArgumentError unknown keywords
Migrate a PunBB forum to Discourse
Migrate a phpBB3 forum to Discourse
Migrate a FluxBB forum to Discourse
Migrate a vBulletin 3 forum to Discourse via XenForo
Regarding the installation - docker
Migrate a NodeBB forum with MongoDB to Discourse
Migrate a Ning forum to Discourse
Migrate a Phorum forum to Discourse
Migrate from another forum to Discourse
Migrate a Kunena 3 forum to Discourse
Migrate a bbPress WordPress plugin forum to Discourse
Install Discourse for development using Docker
Use the Discourse API ruby gem
Enable CORS on localhost for DiscourseConnect
Set Environmental Variables
Need help integrating code wrote on Edittext to the Discourse
Keyboard navigation messes up the search menu
WP-Discourse not connected and admin email not recognized
Contributing to Discourse development
How to install discussions on localhost in my mac?
How to install Discourse for Wordpress locally running on MAMP
Error when building: "Runtime Error: discourse does not support compiling scss/sass files via sprockets"
Discourse as Your First Rails App
Migrate from GetSatisfaction to Discourse
Upgrading Mathjax to version 4
Windows server publish method
Migrate a MyBB forum to Discourse
Category option: max topics per user (2 use-case examples)
Can't deploy to heroku
[PAID] Import from Legacy Postgres DB
Vagrant based server failing on db:migrate
Change unicorn port from 3000 in development
I want to build a debug version of discourse
Moderation Tools
Rails server --daemon and plugins
Installing problem - bundle install
Nginx Performance Report plugin incompatible with development environment setup script
Rake aborted message is showing when installing vagrant development
Update PhantomJS to latest for Ubuntu dev guide?
Cannot Backup my Development Instance (Fails)
Install error : Protocol violation
Can't set up dev environment due to cppjieba_rb failing to install
How to edit the discourse files? A development box?
How to add a new language
How to relax Content Security Policy
Installing Discourse for macOS Development Using asdf and docker-compose
Override profile background via SSO
Can't set up dev environment due to cppjieba_rb failing to install
Stuck in infinite loop in Mac terminal after source ~/.bashrc
Install on macOS – Failure: Scheduler::Defer can pause and resume
Disabling SSO in development environment
Local development and deploying from same repo
Discourse Connect on Local instance is not working
Can't start localhost server -- file was built for x86_64 which is not the architecture being linked (i386)
Please help, how do I install Discourse on macOS?
How to connect to an external database running on localhost
How can I include discourse in my local dev stack?
Topic List Previews (TLP)
Global messages on 94632 timed out, restarting process, 95535 successfully terminated by `TERM` signal
Cannot get embedding to work
/admin/config/emoji non responsive/locks up
App.yml file does not exist when installing Discourse locally
Ember-cli error on local MacOS development
Importing / migrating from Zendesk Community to Discourse
Redis version error when I run bundle exec db:create
Dev environment setup failed on bundle install
Set up a local Discourse Development Environment?

If anyone is getting failing specs with most of them being .count errors, then try the following:

RAILS_ENV=test bundle exec rake db:reset

I had a problem where development data somehow got into my test database and was causing lots of failures.

7 „Gefällt mir“

Is it possible to reset a discourse completely?

2 „Gefällt mir“

Yes, do:

rake db:drop db:create db:migrate

Note that this will wipe everything and you will have to create your Admin user account again.

11 „Gefällt mir“

Can someone assist me in how I can update my discourse?

/launcher rebuild app

returns an error.

1 „Gefällt mir“

./launcher rebuild app is for discourse_docker based production setup. To update local/development Discourse instance you need:

cd ~/discourse
git pull origin master
8 „Gefällt mir“

I get this error @techAPJ,

error: Your local changes to the following files would be overwritten by merge:
	.gitignore
Please commit your changes or stash them before you merge.
Aborting

The error message is pretty clear:

Please commit your changes or stash them before you merge.

If you want to ignore your local changes, do:

git fetch origin
git reset --hard origin/master
7 „Gefällt mir“

Mit der Anleitung aus dem Ruby on Rails-Forum stecke ich aktuell bei Schritt 7 fest.

Das ist wahrscheinlich eine sehr „anfängerhafte" Frage, aber wie „verweise" ich auf den experimentellen Zweig, der in diesem Thema verlinkt war? Ich habe ein paar Dinge ausprobiert und habe jedes Mal die Meldung Unknown command mini_racer erhalten.

1 „Gefällt mir“

Das ist hier völlig in Ordnung.

In diesem Leitfaden verweisen wir auf einige spezifische Anweisungen für M1, die wir verfasst und im Rails-Forum erwähnt haben.

Ich müsste später auf meinem M1 Air nachschauen, und vielleicht wissen meine Kollegen, die kürzlich neue Macs eingerichtet haben, besser, ob das überhaupt noch nötig ist. Aber in Schritt 7 gibt es ein Beispiel, wie man auf einen Zweig verweist:

gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'

Du würdest also diese Zeile in deiner lokalen Version von discourse/Gemfile bearbeiten:

und dann bundle install ausführen.

4 „Gefällt mir“

Der Link befindet sich ganz oben im ursprünglichen Beitrag.

Das Thema im Ruby on Rails-Forum ist seit vielen Monaten inaktiv. Der Fragesteller ist seit Februar nicht mehr aktiv und hat auf keine Kommentare dort geantwortet, in denen um Hilfe gebeten wurde.

Hier gibt es mehr Menschen, die mir helfen können. Nur zur Info. :wink:

Ich habe versucht, dies in das Terminal zu kopieren, und erhielt denselben Fehler Unknown command mini_racer, wie zuvor.

Zugegebenermaßen ist die Anleitung im Ruby on Rails-Forum in dieser Hinsicht nicht so klar, wie ich es mir erhofft hätte.

Entschuldigung im Voraus… :pray:

2 „Gefällt mir“

Das ist kein auszuführender Befehl. Du musst die eigentliche Textdatei namens „Gemfile" bearbeiten, die sich im Discourse-Verzeichnis befindet.

1 „Gefällt mir“

Doh! :facepalm:

Danke! Ich probiere das sofort aus.

Meiner Meinung nach sollte jemand den Leitfaden im Ruby on Rails-Forum bearbeiten und weitere Klarstellungen zu Schritt 7 liefern. Das ist nur meine bescheidene Meinung.

Ich bin gleich zurück. Einen Moment bitte…

1 „Gefällt mir“

Entschuldige, ich muss leider los, aber ich glaube, die mini_racer-Fixierung für M1-Macs wurde bereits übernommen. Ich habe gerade meine Gemfile auf meinem M1-Mac geprüft, und bei mir wurde sie nicht bearbeitet. Du kannst also Schritt 7 überspringen.

3 „Gefällt mir“

Ich habe Schritt 8 ausgeführt und erhielt den Fehler „Could not locate Gemfile".

Ich (glaube) ich habe Schritt 7 hinbekommen, aber Schritt 8 bereitet mir immer noch Probleme und wirft den oben genannten Fehler aus.

Du musst dich beim Ausführen von bundle install im discourse-Verzeichnis befinden.

Hallo @merefield: Könntest du dein Remote-Setup etwas genauer beschreiben?

Während der Entwicklung eines Themes kann ich Änderungen direkt auf einer Live-Site vornehmen, aber für die Entwicklung eines Plugins sehe ich keine andere Möglichkeit, als dies auf meinem lokalen Rechner zu tun, wobei die gesamte Discourse-Codebasis (inklusive meines Plugins) vor Ort vorhanden ist.

Das Ergebnis ist, dass bei jeder (nicht-CSS-) Änderung beim Coden eines Plugins beim Neuladen 1) der Lüfter meines Computers auf Hochtouren läuft und 2) es solide 30 Sekunden dauert, bis alles neu geladen ist. Und wenn ich den Server neu starten muss, dauert es mehrere Minuten.

Diese Verzögerungen summieren sich wirklich auf – mit dem Ergebnis, dass es mich unter Umständen eine Stunde kostet, etwas zu coden, was mit meinem normalen Arbeitsablauf (bei dem es ein Hot-Reload gibt oder höchstens 2–3 Sekunden pro Änderung) nur 15 Minuten dauern würde.

Daher wäre ich für jegliche Vorschläge zur Beschleunigung sehr dankbar.

1 „Gefällt mir“

Dies würde wohl besser im Ubuntu-Thema aufgehoben sein, da ich die Installation einfach auf einem Cloud-Server ausführe, der von Nginx und einer vollständigen DNS-Konfiguration (ohne Docker) fronted wird, sodass ich tatsächlich die Domain adressiere. Ich arbeite alles über das Terminal. Ich habe Ember CLI in diesem Setup mittlerweile sogar gut zum Laufen gebracht.

Es ist auch nicht gerade schnell, aber schnell genug. Der Vorteil ist, dass man vollständige HTTPS-Callback-Dienste ausführen und testen kann.

Die mit Abstand schnellste Plugin-Entwicklungsumgebung, die ich kenne, ist das lokale Docker Dev auf WSL2, das rasend schnell ist. Zudem ist es äußerst einfach zu warten. Leider funktioniert discourse_theme in dieser Umgebung meines Wissens nach noch nicht, weshalb ich für diese Arbeit wieder auf meinen Cloud-Server zurückkehre.

Es ist etwas seltsam, warum Apple hier hinterherhinkt? Die Microsoft-Ingenieure haben sich als sehr klug erwiesen.

3 „Gefällt mir“

Falls jemand Fehler bei der Installation von Ruby 2.7.3 erhält, hat sich offenbar nach Xcode 12 etwas geändert, was den Installationsprozess mit rbenv unterbricht:

Ich erhielt immer wieder Folgendes, obwohl ich die neuesten Versionen von psych und libyaml installiert habe:

Es scheint, dass Ihrer Ruby-Installation psych (für YAML-Ausgabe) fehlt.
Um diese Warnung zu beseitigen, installieren Sie bitte libyaml und installieren Sie Ihr Ruby neu.

Ich habe den Workaround ausprobiert, den sie im Leitfaden vorschlagen, aber ich erhielt immer wieder dieselbe Fehlermeldung und musste schließlich rvm verwenden:

rvm install 2.7.3
1 „Gefällt mir“

Bezüglich der Frage, wie man beim Erstellen eines Plugins schneller programmieren kann, habe ich kürzlich meinen Ansatz geändert. Und es funktioniert großartig. Im Grunde verlagert man alle Frontend-Sachen in eine Theme-Komponente und programmiert nur die Backend-Sachen im Plugin selbst. Ich weiß, dass andere das schon früher herausgefunden haben. Aber jetzt, wo ich es tue, ist das Programmieren so viel schneller und angenehmer. Details hier.

3 „Gefällt mir“