Newbie note: you must run the generator in the Discourse source directory (that’s /src if you use Docker). Otherwise you’ll just get confusing error/help messages about how the parameters are incorrect for rails new.
There seems to be a mismatch between the plugin generator and this post. Specifically, the Beginner’s Guide suggests to create the javascript initializer with the following directory and naming structure:
plugins/basic-plugin/assets/javascripts/discourse/initializers/alert.js.es6
However, the plugin creates the javascript initializer at
plugins/discourse-racoon/assets/javascripts/initializers/discourse-racoon.es6
Personally, I was having issues with the javascript loading after using this plugin until I changed the directory and naming structure to match the Beginner’s guide. Should the package be updated?
Yes would be better indeed.
Yes I had to rename the JavaScript extensions but the structure worked for me.
Cant help you, you give me no context. What did you type? where did you type it? clean or exisisting state?
I followed this tutorial https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins-part-1/30515. Just installed and worked so guess its clean.
I typed:
bundle exec rails g plugin cidian
EDIT: Capitalization matters in ruby. The name of the plugin created by this generator gets to be a ruby class so that’s why a lower case argument supplied to this generator will lead to a broken plugin.
No it’s not clean as you have followed this tutorial to create a plugin, and the error is likely in what you typed while following the tutorial.
The error is very clear to me: mount ::cidian::Engine, at: "/cidian" is invalid. You should fix this in your code.
First of all: I dont know ruby (yet) as I will start from the front end.
this code was produced by this plugin generator. so its not my fault. Its the generators fault. I typed nothing while following the tutorial. I just followed the development environment setup guide for ubuntu. Before running the generator the local discourse instance worked fine.
https://github.com/discourse/discourse/blob/master/lib/generators/plugin/templates/plugin.rb.erb
to be very clear: I am just at the first page of this tutorial. specifically the part that links to this plugin generator.
Ich habe gerade ein riesiges Update dafür durchgeführt.
Es folgen weitere Updates: spezifische Generatoren, also beispielsweise das Hinzufügen eines Controllers, sowie Admin-Plugins.
Wow! Sieht im Diff super aus (für jemanden, der sich kaum mit dem Schreiben von Plugins auskennt). Ich kann es kaum erwarten, es auszuprobieren (werde es aber wahrscheinlich erst am Montag im Büro tun
)
Hey, @j.jaffeux, ich habe es gerade ausprobiert (und nach dem ersten Fehlschlag erneut einen git pull durchgeführt und weitere Plugins damit erstellt) und bekomme folgende Meldung:
/home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/mapper.rb:314:in `block (2 levels) in check_controller_and_action': 'one_two/one-two' ist kein unterstützter Controller-Name. Dies kann zu potenziellen Routing-Problemen führen. Siehe http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use (ArgumentError)
Ich bin traurig, denn ich habe ein Plugin, das damit begonnen hat, und habe viel Code hinzugefügt, bevor ich es ausgeführt habe. Können Sie mir sagen, wie ich das Problem beheben kann? Die Hinweise in diesem Leitfaden und das, was ich auf StackOverflow gefunden habe, helfen mir nicht weiter.
Vielen Dank.
Oh ja, ich bin zufällig darauf gestoßen und habe es noch nicht behoben.
Ich denke, es sollte controllers/one_two/one_two_controller.rb sein, bin mir aber nicht sicher, da Sie nicht alle Daten angeben.
Es sieht so aus, als hätte ich es gefunden! Der Übeltäter steckt in config/routes.rb. Ich habe
get "/" => "three-four#index", constraints: ThreeFourConstraint.new
in
get “/” => “three_four#index”, constraints: ThreeFourConstraint.new
geändert, und alles ist in Ordnung – zumindest für mein naives Auge.
Wie gehe ich dabei vor?
Ich versuche, dies in meiner neuen Debian-Umgebung unter Windows Subsystem zu verwenden.
Mein Discourse funktioniert und läuft, aber wenn ich versuche, folgendes auszuführen:
rails g plugin --help
Erhalte ich:
/var/lib/gems/2.5.0/gems/railties-6.0.0/lib/rails/app_loader.rb:53: warning: Insecure world writable dir /home/jose/.rbenv/shims in PATH, mode 040777
Could not find actionview_precompiler-0.2.1 in any of the sources
Run `bundle install` to install missing gems.
Das Ausführen von bundle install bewirkt nichts (neu), und der Precompiler steht in der Liste der Gems.
Ideen?
Läuft dein Discourse-Server in einem Docker-Container? Wenn ja, musst du bundle install innerhalb des Containers ausführen.
Nein, das glaube ich nicht. Es ist eine Entwicklungsumgebung, also war es ein direktes Git-Clone.
Das hat OOTB perfekt funktioniert.
Vielen Dank dafür.
Ich habe gerade diesen Rails-Generator ausgeführt, die grundlegende Struktur für ein neues Plugin erstellt, es auf Git hochgeladen, in die YAML-Datei aufgenommen, die App neu aufgebaut und es wurde OOTB einwandfrei installiert.
Ich habe den Plugin-Reiter aufgerufen und siehe da, er war voll ausgestattet mit einer OOTB-Ein-/Ausschalt-Einstellung. ![]()
Vielen Dank an @j.jaffeux für diesen einfach zu bedienenden und nützlichen Generator.
Die einzige Änderung, die ich vorgenommen habe, bestand darin, das enthaltene .git-Verzeichnis mit rm -rf zu entfernen und Git mit re-init neu zu initialisieren, damit ich es in mein Konto schieben konnte. Das lag aber höchstwahrscheinlich daran, dass ich nicht sehr versiert mit git bin und oft git-Befehle mit einem Hammer bearbeiten muss, damit sie so funktionieren, wie ich es mir vorstelle.
Ein fehlerfreier Generator. Nochmals vielen Dank, @j.jaffeux.
Freut mich, dass es bei dir funktioniert hat. Um ehrlich zu sein, sollte ich mir mehr Zeit dafür nehmen, da viele Dinge noch nicht richtig funktionieren.
