discourse-ai에서 gem 설치 시 web.china.template.yml에서 수정한 gem 이미지 소스를 사용하려면 어떻게 해야 하나요?

문제

중국에 있을 때 gem 미러 소스를 변경하고 싶었습니다. fork의 discourse-ai에서 Gemfile과 gemfile.lock의 gem 미러 소스 정보를 수정했지만, 로그에는 여전히 https://rubygems.org/에서 다운로드되는 것으로 표시되었습니다. web.china.template.yml에서 수정한 gem 이미지 소스를 discourse-ai의 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 && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 885 exit 255>
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, 이 오류는 자주 발생합니다

혹시 중국에 계신가요?

네, 어떤 해결책이 있나요?

해결 방법을 찾았습니다. 변환된 gem 이미지를 다운로드한 후 플러그인 종속 라이브러리를 설치하니 플러그인이 다운로드되었습니다.

          - 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

외부 네트워크 서버로 바꾸는 것이 가장 좋습니다. Orz, 국내 서버는 여러 이유로 연결이 안 되는 경우가 많아요.

예를 들어:

급하게 사이트를 구축해야 한다면 시간이 돈보다 중요합니다. 급하지 않다면 직접 알아서 시도해 보세요.

제안해 주신 해결책을 감사드립니다. 문제 해결되었습니다. *.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" && cat ./find_cache.txt && rm ./find_cache.txt

ruby-china.com은 만능이 아닙니다. 이후 다른 문제에 직면할 수도 있습니다(저도 비슷한 문제를 겪었는데, ruby-china.com이 관련 의존성을 업데이트하지 않아서 문제가 발생한 것 같습니다. 다만 당시 기록을 남기지 않아 구체적으로는 기억나지 않습니다).
그때 가서 다시 말하겠습니다 :no_mouth:

실제로 가속 미러 소스의 의존성 라이브러리와 공식 버전 사이에 차이가 있습니다. 가속 소스를 전환해 보면, 칭화대, 중국과기대, 알리바바 중 칭화대의 버전 차이가 가장 작고, 중국과기대의 속도가 가장 빠릅니다. 제 서버는 프라이빗 네트워크에 있으며, 퍼블릭 서버는 데이터 포워딩만 담당하므로 종합 비용이 적게 듭니다. 서버 비용은 월 14위안으로, 2코어(vCPU), 512MB 메모리, 20GB 저장 공간, 80Mbps/s 대역폭(사용량 과금)입니다.

만든 포럼이 꽤 잘 되어 있네요. 의학 관련 내용인 것 같은데, 저희는 컴퓨터 기술 포럼을 운영하고 있습니다. ChatGPT를 중국에서 사용할 수 있도록 연동해 두었는데, 관심 있으시다면 사용 권한을 부여해 드릴 수 있습니다.

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