Générateur de plugin Rails

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.

5 « J'aime »

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?

4 « J'aime »

Yes would be better indeed.

3 « J'aime »

Yes I had to rename the JavaScript extensions but the structure worked for me.

this thing breaks for me.

Cant help you, you give me no context. What did you type? where did you type it? clean or exisisting state?

6 « J'aime »

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.

2 « J'aime »

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.

Je viens de publier une mise à jour majeure sur ce sujet.

D’autres choses à venir : des générateurs spécifiques, par exemple pour ajouter un contrôleur, ainsi que des plugins d’administration.

12 « J'aime »

Wow ! Ça a l’air super vu le diff (pour quelqu’un qui sait très peu écrire des plugins). J’ai hâte de l’essayer (mais je vais probablement attendre d’être au bureau lundi :wink:)

2 « J'aime »

Salut, @j.jaffeux, je viens de l’essayer (et j’ai refait un git pull et créé quelques plugins supplémentaires après que cela ait échoué la première fois), et j’obtiens :

/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' n'est pas un nom de contrôleur pris en charge. Cela peut entraîner des problèmes de routage. Voir http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use (ArgumentError)

Je suis déçu car j’ai un plugin qui a commencé comme ça et auquel j’ai ajouté beaucoup de code avant de l’exécuter. Peux-tu me dire comment résoudre ce problème ? Les informations de ce guide et celles que j’ai trouvées sur StackOverflow ne m’aident pas.

Merci.

Oh oui, je suis tombé sur cet autre problème et je n’ai pas encore trouvé de solution.

Je pense que cela devrait être controllers/one_two/one_two_controller.rb, mais je ne suis pas sûr, car vous ne fournissez pas toutes les données.

4 « J'aime »

Il semble que je l’aie trouvé ! Le coupable se trouve dans config/routes.rb. J’ai modifié

 get "/" => "three-four#index", constraints: ThreeFourConstraint.new

en

get “/” => “three_four#index”, constraints: ThreeFourConstraint.new

et tout va bien, du moins à mon œil naïf.

Comment dois-je procéder ?

Tentative d’utilisation de ceci dans mon nouvel environnement Debian sous Windows Subsystem
Mon Discourse fonctionne et s’exécute, mais lorsque j’essaie d’exécuter

rails g plugin --help

je reçois

/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.

L’exécution de bundle install ne produit aucun effet (nouveau) et precompiler figure dans la liste des gems.
Des idées ?

Votre serveur Discourse s’exécute-t-il dans un conteneur Docker ? Si c’est le cas, vous devez exécuter bundle install à l’intérieur du conteneur.

Non, je ne pense pas. C’est une instance de développement, c’était un clone git direct.

Cela a fonctionné parfaitement sans configuration préalable.

Merci pour cela.

Je viens d’exécuter ce générateur Rails, qui a créé la structure de base d’un nouveau plugin, l’a uploadé sur Git, ajouté au fichier YAML, reconstruit l’application, et tout s’est installé parfaitement sans configuration préalable.

J’ai visité l’onglet du plugin, et il était là, entièrement équipé d’un paramètre d’activation/désactivation intégré. :heart:

Merci beaucoup à @j.jaffeux pour ce générateur simple et utile.

La seule modification que j’ai apportée a été de supprimer le répertoire .git inclus avec rm -rf et de réinitialiser Git avec git init afin de pouvoir le pousser vers mon compte ; mais cela est probablement dû au fait que je ne suis pas très compétent avec git et que je dois souvent frapper les commandes git avec un marteau pour qu’elles fonctionnent comme je le pense.

Générateur impeccable. Merci encore à @j.jaffeux

4 « J'aime »

Ravi que cela ait fonctionné pour vous. Pour être honnête, je devrais y consacrer du temps, car il y a beaucoup de choses qui ne fonctionnent pas correctement.

6 « J'aime »