Discourse für die Entwicklung auf macOS installieren

:warning: Diese Anleitung enthält Installationsanweisungen für eine macOS-Entwicklungsumgebung. Für Produktionsanleitungen siehe: Install Discourse in production with the official supported instructions

Möchtest du also Discourse unter macOS einrichten, um daran zu hacken und zu entwickeln?

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

Discourse-Abhängigkeiten installieren

Du benötigst die folgenden Pakete auf deinem System:

** optional

Starte dein Terminal neu

Da wir nun die Discourse-Abhängigkeiten installiert haben, können wir mit der Installation von Discourse selbst fortfahren.

Terminal neu starten

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

Discourse klonen

Klone das Discourse-Repository in den Ordner ~/discourse:

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

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

Discourse bootstrappen

Wechsle in deinen Discourse-Ordner:

cd ~/discourse

Installiere die benötigten Gems

bundle install

Installiere die JS-Abhängigkeiten

pnpm install

Führe als Nächstes diese 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. Hier hast du zwei Möglichkeiten.

Option 1: Verwende zwei separate Terminal-Tabs/Fenster und starte Rails und den Frontend-Bundler separat über

bundle exec rails server

und

bin/dev --only ember

Option 2: Verwende nur ein Terminal-Fenster:

bin/dev # startet Pitchfork und den Frontend-Bundler zusammen

:tada: Du solltest dich nun unter http://localhost:3000 zu deiner lokalen Discourse-Installation navigieren können. (Beachte, dass das erste Laden bis zu einer Minute dauern kann, während der Server hochfährt.)

Du kannst auch versuchen, die Specs auszuführen:

bundle exec rake autospec

Alle (oder fast alle) Tests sollten bestanden werden.

Neuen Admin erstellen

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

RAILS_ENV=development bundle exec rake admin:create

Befolge die Aufforderungen, um ein Admin-Konto zu erstellen.

E-Mail konfigurieren

Starte MailHog:

mailhog

Herzlichen Glückwunsch! Du bist nun der Admin deiner eigenen Discourse-Installation!

Viel Spaß beim Hacken! Um damit zu beginnen, sieh dir die Einsteigeranleitung zum Erstellen von Discourse-Plugins an.


Dieses Dokument ist versionskontrolliert – Vorschläge zur Änderung auf GitHub.

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?
Discourse standalone
MacOS Installation Gem::FilePermissionError
UndefinedTable: ERROR: relation "web_hook_event_types" when trying to run rspec test
Starting discourse fails with bootstrap error
Error after cleaning tmp folder
Please help, how do I install Discourse on macOS?
Local installation internal use only
Migrate a NodeBB forum with Redis to Discourse
Help me setup my Discourse development environment
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
Migrate a MyBB forum to Discourse
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
Regarding the installation - docker
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"
Migrate from GetSatisfaction to Discourse
Case study of an amateur plugin author
Upgrading Mathjax to version 4
Windows server publish method
Discourse as Your First Rails App
Topic List Previews (TLP)
Set Environmental Variables
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?
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?
[Need help][MacOS M1 dev installation] ArgumentError unknown keywords

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“