Come fare in modo che l'installazione della gem in discourse-ai utilizzi la sorgente dell'immagine gem modificata in web.china.template.yml?

problema

Quando ero in Cina, volevo cambiare la fonte dello specchio delle gemme. Su discourse-ai di fork, ho modificato le informazioni della fonte dello specchio delle gemme in Gemfile e gemfile. lock, ma il log mostrava ancora il download da https://rubygems.org/. Come fare in modo che l’installazione delle gemme in discourse-ai utilizzi la fonte dell’immagine delle gemme modificata in web.china.template.yml

Errori inevitabili

sudo ./launcher rebuild app

I, [2023-11-10T04:40:17.388494 #1]  INFO -- : \u003e cd /var/www/discourse \u0026\u0026 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 `\u003cmain\u003e'
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 \u0026\u0026 su discourse -c 'bundle exec rake db:migrate' failed with return #\u003cProcess::Status: pid 885 exit 255\u003e
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\"=\u003e\"$home\", \"hook\"=\u003e\"db_migrate\", \"cmd\"=\u003e[\"su discourse -c 'bundle exec rake db:migrate'\"]}\nbootstrap 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, Questo errore viene riscontrato spesso

Per caso ti trovi in Cina?

Sì, c’è qualche soluzione

Ho trovato una soluzione, il plugin scaricato dopo la conversione dell’immagine gem per installare la libreria dipendente 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 Mi Piace

È meglio cambiare un server esterno, i server nazionali non si connettono affatto

Come

Se hai fretta di creare un sito web, il tempo è più importante del denaro, se non hai fretta, puoi fare come preferisci.

1 Mi Piace

Grazie per la soluzione, è stata risolta. Aggiungendo questo alla configurazione *.yml, è stato risolto anche il problema di impossibilità di scaricare librerie a causa del sito web della libreria registry.yarnpkg.com che non aveva un certificato SSL valido.

    - 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 non è onnipotente, potresti incontrare altri problemi in seguito (mi è successo, sembra che ruby-china.com non abbia aggiornato le dipendenze pertinenti, il che ha causato problemi, ma non ho preso appunti sui record pertinenti, non riesco a ricordare i dettagli)
Ne parleremo allora :no_mouth:

1 Mi Piace

Esiste una differenza tra le librerie di dipendenza che accelerano le sorgenti mirror e la versione ufficiale. Passando a una sorgente accelerata, come quella dell’Università di Scienza e Tecnologia della Cina (USTC), Tsinghua o Alibaba, la versione di Tsinghua ha differenze minori, mentre quella della USTC è la più veloce. Il mio server si trova in un dominio privato, il server di rete pubblica viene utilizzato solo per l’inoltro dei dati, il che riduce i costi complessivi. Il costo del server è di 14 yuan al mese, con 2 core (vCPU), 512 MB di RAM, 20 GB di spazio di archiviazione e una larghezza di banda di 80 Mbps/s (pagamento a consumo).

Il forum che hai creato sembra buono, è legato alla medicina. Noi gestiamo un forum di tecnologia informatica che ha integrato ChatGPT per l’uso in Cina. Se sei interessato, possiamo concederti una licenza d’uso.

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