Hmmmm. That’s a tricky one, because the symlink needed to be deleted, otherwise the Docker mount fails (as it cannot overwrite the existing file).
I had a bit of a google around for solutions, and found an interesting solution which would dereference the symlink and copy the symlink’s target into the specified directory, but couldn’t find anything that would create a Docker volume mount, thus preserving the dynamic link and bi-directional synchronisation. Happy to be steered towards a solution as this would be a neat feature to have.
Sto appena iniziando il mio primo piccolo plugin Ho alcune domande, spero che qualcuno possa aiutarmi…
La prima domanda è: importa se usiamo ciò che è in questa guida o dovremmo davvero puntare a usare il generatore di plugin?
Non è stato trattato in questa guida, ma come possiamo rendere i dati disponibili ai nostri template dal file plugin.rb?
Supponiamo, ad esempio, che voglia visualizzare un messaggio di benvenuto casuale nell’outlet del plugin topic-above-posts ogni volta che qualcuno visita un argomento, con il messaggio scelto casualmente da un array in plugin.rb… come invieresti quei dati al template? Che presumibilmente andrebbe qui:
Utilizzare il generatore di plugin è generalmente un ottimo modo per iniziare e capire come dovrebbe essere strutturato un plugin. Lo consiglio.
Ora, per quanto riguarda come inserire il codice Ruby nel frontend: si tratta di due applicazioni diverse. L’applicazione frontend (Ember) dovrà richiederla al server (Rails) in qualche modo. Normalmente lo facciamo tramite una chiamata AJAX, ma potresti anche aggiungere qualcosa al SiteSerializer in modo che venga inviata automaticamente come parte dei dati del forum.
In alternativa, dovrai consultare come aggiungere una route/controller in Rails e inviare i messaggi come JSON.
Sai se esistono tutorial su questo? Oppure, c’è un semplice plugin (o anche un plugin fittizio) che possiamo consultare per capire la direzione giusta da prendere? (Se non esiste, potresti metterlo a disposizione per noi da qualche parte? Penso che aiuterebbe molte persone )
Inoltre… hai altri pensieri sulla scrittura di un libro? Posso metterti in contatto con qualcuno se ti fa piacere
Grazie per il complimento, ma sono decisamente troppo impegnato per prendere in considerazione la scrittura di un libro. Inoltre, i libri di tecnologia hanno una portata SUPER limitata. Chi conosco che ne ha scritti dice che lo fai per te stesso, non per i soldi
Non riesco a pensare a un semplice plugin per restituire qualcosa dal lato server. discourse-tooltips aggiunge una rotta e poi la utilizza per ottenere anteprime degli argomenti mentre passi il mouse sopra, quindi potrebbe essere utile.
Esiste un elenco di hooks dove possiamo effettivamente plugin?
Ad esempio, se volessimo scrivere un plugin per elaborare i dati cooked in un post prima che vengano visualizzati, ci aspetteremmo di trovare almeno un hook all’inizio e uno alla fine, come (ad esempio):
display_post_start
display_post_complex
In tal caso, il nostro plugin si hookerebbe al codice nella posizione del hook scelta tra quelle sopra.
Esiste un elenco di questi plugin hooks e come vengono chiamati questi plugin hooks in DiscourseWorld?
Aggiornamento: Ho trovato questo:
git grep "plugin-outlet" -- "*.hbs"
Ma non ho visto alcun outlet per modificare il contenuto cooked di un post.
Esiste un tutorial su come creare i nostri outlet, ad esempio un outlet per modificare la parte cooked dei post?
Lo scheletro è compatibile con Ember 5. Ma se hai aggiunto codice JavaScript o template HBS, dovrai verificare le deprecazioni come descritto nell’annuncio.
Sì, le cose in package.json sono solo relative al linting, non influiscono sulla funzionalità o sulla compatibilità di un plugin.
Aggiungerei anche una nota quando si utilizza la configurazione Docker, poiché le istruzioni precedenti falliranno con un errore simile a
ambientimpact:~/.../Discourse/discourse$ d/rake plugin:create[neurocracy-date-rewrite]
Cloning 'https://github.com/discourse/discourse-plugin-skeleton' to '/src/plugins/neurocracy-date-rewrite'...
Initializing git repository...
Initialized empty Git repository in /src/plugins/neurocracy-date-rewrite/.git/
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <discourse@localhost>) not allowed
rake aborted!
Command failed with exit 128: git
/src/lib/tasks/plugin.rake:354:in `system'
/src/lib/tasks/plugin.rake:354:in `block (2 levels) in <main>'
/src/lib/tasks/plugin.rake:344:in `chdir'
/src/lib/tasks/plugin.rake:344:in `block in <main>'
Tasks: TOP => plugin:create
(See full trace by running task with --trace)
Prima devi configurare il tuo .gitconfig all’interno del container (cambia email e nome secondo necessità) prima di provare a creare il plug-in: