Wie kann die Gem-Installation in discourse-ai die in web.china.template.yml geänderte Gem-Image-Quelle verwenden?

Problem

Als ich in China war, wollte ich die Gem-Spiegelquelle ändern. Bei Discourse-AI von Fork habe ich die Gem-Spiegelquelleninformationen in Gemfile und Gemfile.lock geändert, aber die Protokollanzeige wurde immer noch von https://rubygems.org/ heruntergeladen. Wie kann ich sicherstellen, dass die Gem-Installation in Discourse-AI die in web.china.template.yml geänderte Gem-Bildquelle verwendet?

Unvermeidliche Fehler

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"=>"$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, Dieser Fehler tritt häufig auf

Befinden Sie sich zufällig in China?

Ja, gibt es eine Lösung

Ich habe eine Lösung gefunden, das Plugin, das nach der Konvertierung heruntergeladen wurde, ist ein Gem-Image zur Installation der Plugin-abhängigen Bibliothek

          - 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 „Gefällt mir“

Es wäre am besten, einen ausländischen Server zu verwenden, da inländische Server schwer zu erreichen sind.

Wenn Sie es eilig haben, eine Website einzurichten, ist Zeit wichtiger als Geld. Wenn Sie es nicht eilig haben, können Sie es nach Belieben selbst ausprobieren.

1 „Gefällt mir“

Vielen Dank für den bereitgestellten Plan, er wurde bereits gelöst. Fügen Sie Folgendes in die *.yml-Konfiguration ein, und das Problem, dass die Website des registry.yarnpkg.com-Repositorys kein gültiges SSL-Zertifikat hat und dadurch keine entsprechenden Bibliotheken heruntergeladen werden können, wurde ebenfalls behoben.

    - 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 ist nicht allmächtig, und Sie können in Zukunft auf andere Probleme stoßen (ich bin auf welche gestoßen, es scheint, dass ruby-china.com die relevanten Abhängigkeiten nicht aktualisiert hat, was zu Problemen führte, aber ich habe keine Aufzeichnungen darüber gemacht und kann mich nicht genau erinnern)
Wir werden sehen :no_mouth:

1 „Gefällt mir“

Es gibt tatsächlich Unterschiede zwischen den Abhängigkeitsbibliotheken der beschleunigten Mirror-Quellen und den offiziellen Versionen. Wenn Sie zu einer beschleunigten Quelle wechseln, z. B. USTC, Tsinghua oder Alibaba, ist der Versionsunterschied bei Tsinghua am geringsten. USTC ist am schnellsten. Mein Server befindet sich in einer privaten Domäne, und der öffentliche Server dient nur zur Datenweiterleitung, was die Gesamtkosten senkt. Die Serverkosten betragen 14 Yuan pro Monat für 2 Kerne (vCPU) 512 MB, 20 GB Speicher und eine Bandbreite von 80 Mbit/s (Pay-as-you-go).

Ich sehe, dass Ihr Forum gut ist, es scheint medizinisch zu sein. Wir haben ein Forum für Computertechnologie, das ChatGPT in China nutzbar macht. Wenn Sie interessiert sind, können wir Ihnen eine Lizenz zur Nutzung anbieten.

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