web.china.template.ymlで変更されたgemイメージソースを使用するようにdiscourse-aiのgemインストールを行う方法

問題

中国にいたとき、gemのミラーソースを変更したかった。discourse-ai のフォークで、Gemfile と gemfile.lock の gem ミラーソース情報を変更したが、ログにはまだ https://rubygems.org/ からダウンロードされていると表示された。discourse-ai の gem インストールで web.china.template.yml で変更した gem イメージソースを使用するにはどうすればよいか。

回避不能なエラー

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,This error is often encountered

もしかして中国にいらっしゃいますか?

はい、何か解決策はありますか

変換後にプラグインをダウンロードし、プラグイン依存ライブラリをインストールすることで解決策を見つけました

          - 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

海外のサーバーに切り替えた方がいいですよOrz、国内サーバーは色々と繋がりません。

例えば

もしサイト構築を急いでいて、時間がお金より重要なら、急いでいないなら、自分で自由に試すことができます。

「いいね!」 1

提供されたソリューションに感謝します。問題は解決しました。*.yml設定に以下を追加することで、registry.yarnpkg.comライブラリサイトの有効なSSL証明書がないために関連ライブラリをダウンロードできない問題も統合的に解決しました。

    - 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" &amp;&amp; cat ./find_cache.txt &amp;&amp; rm ./find_cache.txt

ruby-china.comは万能ではありません。後で他の問題に遭遇する可能性があります(私は遭遇しました。ruby-china.comが関連する依存関係を更新しなかったため問題が発生したようですが、関連する記録をメモしなかったので、具体的には思い出せません)。
その時はその時です :no_mouth:

「いいね!」 1

ミラーソースの依存ライブラリと公式バージョンとの間に確かに違いがあります。ミラーソースを切り替えると、中国科学技術大学、清華大学、アリババになります。清華大学のバージョン差は比較的小さく、中国科学技術大学が最も高速です。私のサーバーはプライベートドメインにあり、パブリックネットワークサーバーはデータ転送のみを行い、総合コストは低いです。サーバーコストは月額14元、2コア(vCPU)512 MB、20 GBストレージ、帯域幅80 Mbps/s(従量課金制)です。

あなたのフォーラムは素晴らしいですね。医学関連のフォーラムのようですが、私たちはコンピュータ技術フォーラムを運営しており、ChatGPTを中国で使用できるようにしました。もし興味があれば、使用を許可することができます。

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