Rails。 Puma 在实例化 Google Cloud Text-to-Speech (Windows) 的客户端时停止工作

Rails. Puma stops working when instantiating a client of Google Cloud Text-to-Speech (Windows)

我已将 Ruby 版本从 2.5.x 升级到 2.6.x(并卸载了 2.5.x 版本)。 现在 Puma 服务器在实例化 Google Cloud Text-to-Speech:

的客户端时停止工作
client = Google::Cloud::TextToSpeech.text_to_speech

它只是退出而没有给出错误(在命令提示符中)。并且 'bash' 终端中有一条 'Segmentation fault' 消息。

Puma 配置文件:

max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_threads_count
port        ENV.fetch("PORT") { 3000 }
environment ENV.fetch("RAILS_ENV") { ENV['RACK_ENV'] || "development" }
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
preload_app!
plugin :tmp_restart

与Google Cloud Text-to-Speech 配合使用的方法:

require "google/cloud/text_to_speech"

# Instantiates a client
client = Google::Cloud::TextToSpeech.text_to_speech
  
...

宝石文件:

gem 'rails',                       '6.0.1'
gem 'puma',                        '3.12.2'
gem 'google-cloud-text_to_speech', '1.1.1'
...

OS Windows 10.

我很困惑。我不明白为什么会发生以及如何解决它。 我尝试使用 'puma' 和 'google-cloud-text_to_speech' 的最新 gem 版本,重新安装 Google SDK,但它继续发生。

也许我的凭据有问题? 当 运行 configure 方法(在实例化客户端之前)时,我得到 nil 值:

(byebug) Google::Cloud::TextToSpeech.configure
<Config: endpoint="texttospeech.googleapis.com" credentials=nil scope=nil lib_name=nil lib_version=nil interceptors=nil timeout=nil metadata=nil retry_policy=nil quota_project=nil>

有人可以帮我吗?

尝试重新安装ruby-debug

sudo gem uninstall ruby-debug
sudo gem install ruby-debug

并且,您能否通过包含您的 Gemfile 来扩展您的问题,并且 Gemfile.lock

另一种方法可能是删除 Gemfile.lock 然后 运行 bundle install

rm -rf Gemfile.lock
bundle install

好的,我找到了这个烂摊子的原因。

这与 Ruby 版本更新无关。我 运行 bundle update 在重新安装 Rails 后,它更新了我的 'Gemfile.lock' 文件中的 google-cloud-text_to_speech-v1google-cloud-text_to_speech-v1beta1 版本。对于这些更新版本,我遇到了上面描述的错误。

所以,解决方案是:不要 运行 完成 bundle update,只更新你需要的确切位置(在我的例子中,我只需要 运行 bundle update mimemagic为了能够启动 Rails 服务器)。