Comment faire en sorte que l'installation gem dans discourse-ai utilise la source d'image gem modifiée dans web.china.template.yml ?

Problème

Quand j’étais en Chine, je voulais changer la source du miroir de gemmes. Sur le fork de discourse-ai, j’ai modifié les informations de la source du miroir de gemmes dans Gemfile et gemfile.lock, mais le journal affichait toujours le téléchargement depuis https://rubygems.org/. Comment faire en sorte que l’installation de gemmes dans discourse-ai utilise la source de l’image de gemmes modifiée dans web.china.template.yml ?

Erreurs inévitables

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, Cette erreur est souvent rencontrée

Êtes-vous en Chine par hasard ?

Oui, y a-t-il une solution

J’ai trouvé une solution, le plugin téléchargé après la conversion gem image pour installer la bibliothèque dépendante du 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 « J'aime »

Il vaut mieux changer pour un serveur étranger, les serveurs nationaux sont difficiles à connecter.

Comme

Si vous êtes pressé de créer un site, le temps est plus important que l’argent. Si vous n’êtes pas pressé, vous pouvez bricoler à votre guise.

1 « J'aime »

Merci pour la solution, cela a été résolu. L’ajout de ceci dans la configuration *.yml a également résolu le problème de téléchargement de bibliothèques dû à un certificat SSL invalide sur le site Web de la bibliothèque registry.yarnpkg.com.

    - 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 n’est pas une panacée, vous pourriez rencontrer d’autres problèmes plus tard (j’en ai rencontré, il semble que ruby-china.com n’ait pas mis à jour les dépendances pertinentes, ce qui a causé des problèmes, mais je n’ai pas pris de notes sur les enregistrements pertinents, donc je ne m’en souviens pas précisément)
Nous en reparlerons plus tard :no_mouth:

1 « J'aime »

Il existe effectivement des différences entre les bibliothèques dépendantes des sources d’accélération et la version officielle. En passant à une source d’accélération, comme celle de l’Université de science et technologie de Chine (USTC), de Tsinghua ou d’Alibaba, la version de Tsinghua présente une différence minime, tandis que celle de l’USTC est la plus rapide. Mon serveur se trouve dans un domaine privé, et le serveur du domaine public est uniquement utilisé pour la transmission de données, ce qui réduit les coûts globaux. Le coût du serveur est de 14 yuans par mois, avec 2 cœurs (vCPU), 512 Mo de RAM, 20 Go de stockage et une bande passante de 80 Mbps/s (paiement à l’usage).

Je vois que votre forum est bon, il semble être lié à la médecine. Nous avons un forum sur la technologie informatique qui permet d’utiliser ChatGPT en Chine. Si vous êtes intéressé, nous pouvons vous accorder une licence d’utilisation.

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