¿Cómo hacer que la instalación de gem en discourse-ai use la fuente de imagen del gem modificada en web.china.template.yml?

problema

Cuando estuve en China, quise cambiar la fuente del espejo de gemas. En el fork de discourse-ai, modifiqué la información de la fuente del espejo de gemas en Gemfile y gemfile. lock, pero la visualización del registro todavía se descargaba de https://rubygems.org/. ¿Cómo hacer que la instalación de gemas en discourse-ai use la fuente de imagen de gemas modificada en web.china.template.yml

Errores inevitables

sudo ./launcher rebuild app

I, [2023-11-10T04:40:17.388494 #1]  INFO -- : 
> cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    IOError: HTTP session not yet started (Gem::RemoteFetcher::FetchError)
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/remote_fetcher.rb:266:in `rescue in fetch_path'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/remote_fetcher.rb:246:in `fetch_path'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/remote_fetcher.rb:294:in `cache_update_path'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/remote_fetcher.rb:161:in `rescue in download'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/remote_fetcher.rb:146:in `download'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/source.rb:212:in `download'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/resolver/specification.rb:113:in `download'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/resolver/specification.rb:99:in `install'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:281:in `block in install_into'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:273:in `each'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:273:in `install_into'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:148:in `install'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:215:in `install_gem'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:231:in `block in install_gems'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:224:in `each'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:224:in `install_gems'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:170:in `execute'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/command.rb:328:in `invoke_with_build_args'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/command_manager.rb:253:in `invoke_command'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/command_manager.rb:193:in `process_args'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/command_manager.rb:151:in `run'
        /usr/local/lib/ruby/site_ruby/3.2.0/rubygems/gem_runner.rb:56:in `run'
        /usr/local/bin/gem:12:in `<main>'
I, [2023-11-10T04:49:21.015453 #1]  INFO -- : gem install tokenizers -v 0.3.3 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install

You are specifying the gem tokenizers in /var/www/discourse/plugins/discourse-ai/plugin.rb, however it does not exist!
Looked for:
- /var/www/discourse/plugins/discourse-ai/gems/3.2.2/specifications/tokenizers-0.3.3.gemspec
- /var/www/discourse/plugins/discourse-ai/gems/3.2.2/specifications/tokenizers-0.3.3-x86_64-linux.gemspec
- /var/www/discourse/plugins/discourse-ai/gems/3.2.2/specifications/tokenizers-0.3.3-x86_64-linux.gemspec


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 885 exit 255&gt;
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 255
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
7d6d7efb62fe5cd8f1d85af89fb43a28089d4d91449fec274758f1c5ba2a589d

sudo ./launcher bootstrap web_only, este error se encuentra a menudo

¿Estás en China por casualidad?

Sí, ¿hay alguna solución?

Encontré una solución, el plugin descargado después de la conversión de la imagen de gema para instalar la biblioteca dependiente del plugin

          - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
          - su discourse -c 'bundle config mirror.https://rubygems.org https://gems.ruby-china.com/'
          - gem install tokenizers -v 0.3.3 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install
          - gem install tiktoken_ruby -v 0.0.5 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install
          - gem install aws-eventstream -v 1.2.0 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install
1 me gusta

Sería mejor cambiar a un servidor externo, los servidores nacionales no se conectan de ninguna manera.

Como

Si tienes prisa por construir un sitio web, el tiempo es más importante que el dinero. Si no tienes prisa, puedes hacer lo que quieras.

1 me gusta

Gracias por la solución, ya se ha resuelto. Añadiendo esto en la configuración de *.yml, también se resolvió el problema de que el sitio web de la biblioteca registry.yarnpkg.com no tenía un certificado SSL válido, lo que impedía la descarga de bibliotecas relacionadas.

    - exec:
        cd: $home
        cmd:
          - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
          - bundle config mirror.https://rubygems.org https://gems.ruby-china.com/
          - gem install tokenizers -v 0.3.3 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install
          - gem install tiktoken_ruby -v 0.0.5 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install
          - gem install aws-eventstream -v 1.2.0 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install
          - yarn config set registry https://registry.npmmirror.com/ --global
          - grep -rl "registry.yarnpkg.com" . | tee ./find_cache.txt | xargs sed -i "s/registry.yarnpkg.com/registry.npmmirror.com/g" & && cat ./find_cache.txt & && rm ./find_cache.txt

ruby-china.com no es omnipotente, es posible que te encuentres con otros problemas más adelante (me encontré con uno, parece que ruby-china.com no actualizó las dependencias relevantes, lo que causó problemas, pero no tomé notas de los registros relevantes, no puedo recordarlo específicamente)
Ya veremos :no_mouth:

1 me gusta

Efectivamente, existe una diferencia entre las versiones de los repositorios de dependencias acelerados y la versión oficial. Al cambiar a un repositorio acelerado, como los de la Universidad de Ciencia y Tecnología de China (USTC), Tsinghua o Alibaba, la diferencia de versión con Tsinghua es menor. La USTC tiene la velocidad más rápida. Mi servidor está en una red privada, y el servidor de red pública solo se utiliza para reenvío de datos, lo que reduce los costos generales. El costo del servidor es de 14 yuanes al mes, con 2 núcleos (vCPU), 512 MB de RAM, 20 GB de almacenamiento y un ancho de banda de 80 Mbps/s (pago por uso).

Veo que tu foro es bueno, parece estar relacionado con la medicina. Nosotros tenemos un foro de tecnología informática que permite el uso de ChatGPT en China. Si estás interesado, podemos autorizarte a usarlo.

https://www.zeppos.tech/t/topic/7