Antes que nada, soy completamente nuevo en Ruby on Rails y en el desarrollo de plugins de Discourse, así que si hay una mejor dirección, lo agradecería.
Resumen
Tengo una bifurcación interna de un plugin de Discourse (discourse-ldap-auth) que estoy incorporando a través de un git clone. Esta bifurcación del plugin requiere una bifurcación de Gem (omniauth-ldap) que estoy incorporando a través de Gemfile al agregar la declaración gem con una URL de git interna en el hook after_bundle_exec de la aplicación. La aplicación falla al iniciarse durante la reconstrucción porque no puede encontrar la gema, a pesar de que la gema parece instalarse correctamente antes en la salida de la reconstrucción.
Detalles
Tenemos una instancia de Discourse interna de larga duración donde se requería que los usuarios se registraran con su correo electrónico corporativo. Recientemente agregamos el plugin discourse-ldap-auth para usar el mismo inicio de sesión que otros sitios de intranet. Esta configuración funciona, pero las indicaciones para los usuarios son confusas. La mayoría de los otros sitios de intranet requieren un nombre de usuario, pero nuestra instancia de Discourse requiere una dirección de correo electrónico para asociarla con las cuentas existentes. Me gustaría cambiar los campos para solicitar una dirección de correo electrónico.
omniauth-ldap, que parece ser de donde provienen los textos del formulario, no tiene soporte para personalizar campos como otros plugins de Discourse. He bifurcado esto (y discourse-ldap-auth) internamente con la esperanza de poder personalizar los campos, ya que ahora son específicos de la región. La bifurcación se llama omniauth-ldap-i18n. He agregado esto a mi app.yml para incorporar la bifurcación de omniauth-ldap en el 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'
Dentro de la bifurcación de discourse-ldap-auth en plugin.rb:
gem 'omniauth-ldap-i18n', '1.0.0'
La salida cuando reconstruyo la aplicación:
Using omniauth-ldap-i18n 1.0.0 from https://internal-git-service/omniauth-ldap-i18n.git (at master@c3cb3ed)
Bundle complete! 127 Gemfile dependencies, 187 gems now installed.
Gems in the groups 'test' and 'development' were not installed.
Bundled gems are installed into './vendor/bundle'
La salida del error antes de que falle al iniciarse:
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