Innanzitutto, sono nuovo a Ruby on Rails e allo sviluppo di plugin Discourse, quindi se c’è una direzione migliore, la apprezzerei.
Panoramica
Ho un fork interno di un plugin Discourse (discourse-ldap-auth) che sto importando tramite un clone git. Questo fork del plugin richiede un fork di Gem (omniauth-ldap) che sto importando tramite Gemfile aggiungendo l’istruzione gem con un URL git interno nell’hook after_bundle_exec dell’app. L’app non si avvia durante la ricostruzione perché non riesce a trovare la gemma, anche se la gemma sembra installarsi correttamente in precedenza nell’output di ricostruzione.
Dettagli
Abbiamo un’istanza Discourse interna di lunga data in cui agli utenti era richiesto di registrarsi con la loro email aziendale. Recentemente abbiamo aggiunto il plugin discourse-ldap-auth per utilizzare lo stesso login di altri siti intranet. Questa configurazione funziona, ma le richieste per gli utenti sono confuse. La maggior parte degli altri siti intranet richiede un nome utente, ma la nostra istanza Discourse richiede un indirizzo email per associarlo a eventuali account esistenti. Vorrei modificare i campi per richiedere un indirizzo email.
omniauth-ldap, che sembra essere da dove proviene il testo del modulo, non ha il supporto per la personalizzazione dei campi come altri plugin Discourse. Ho effettuato un fork di questo (e di discourse-ldap-auth) internamente con la speranza di poter personalizzare i campi poiché ora sono specifici della regione. Il fork si chiama omniauth-ldap-i18n. L’ho aggiunto al mio app.yml per includere il fork di omniauth-ldap nel Gemfile:
hooks:
after_bundle_exec:
- exec:
cd: $home
cmd:
- echo "gem 'omniauth-ldap-i18n', git:'https://internal-git-service/omniauth-ldap-i18n.git'" >> Gemfile
- su discourse -c 'bundle config unset deployment'
- su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'
All’interno del fork di discourse-ldap-auth in plugin.rb:
gem 'omniauth-ldap-i18n', '1.0.0'
L’output quando ricostruisco l’app:
Using omniauth-ldap-i18n 1.0.0 from https://internal-git-service/omniauth-ldap-i18n.git (at master@c3cb3ed)
Bundle complete! 127 dipendenze Gemfile, 187 gem ora installate.
Gemme nei gruppi 'test' e 'development' non sono state installate.
Gemme impacchettate sono installate in './vendor/bundle'
L’output dell’errore prima che smetta di avviarsi:
I, [2022-09-10T18:18:08.389538 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
ERROR: Could not find a valid gem 'omniauth-ldap-i18n' (= 1.0.0) in any repository
ERROR: Possible alternatives: omniauth-ldap-ifpe, omniauth-ldap, omniauth-ldap2, omniauth-aladin, omniauth-aliyun, omniauth-apihub, omniauth-learn, omniauth-lifen, omniauth-7digital, omniauth-aai
I, [2022-09-10T18:18:47.658658 #1] INFO -- : gem install pyu-ruby-sasl -v 0.0.3.3 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
Successfully installed pyu-ruby-sasl-0.0.3.3
1 gem installed
gem install rubyntlm -v 0.6.3 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
Successfully installed rubyntlm-0.6.3
1 gem installed
gem install net-ldap -v 0.17.1 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
Successfully installed net-ldap-0.17.1
1 gem installed
gem install omniauth-ldap-i18n -v 1.0.0 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
You are specifying the gem omniauth-ldap-i18n in /var/www/discourse/plugins/discourse-ldap-auth/plugin.rb, however it does not exist!
Looked for: /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6/specifications/omniauth-ldap-i18n-1.0.0.gemspec