我正在dokku上部署一个rails应用程序,版本如下:
- Ruby3.1.2
- Bundler 2.3.26(在我的开发计算机上)
- gem 3.3.22(在我的开发计算机上)
当我尝试部署到dokku时,使用了heroku ruby构建包,并得到以下输出:
-----> Ruby app detected
-----> Installing bundler 2.2.21
-----> Removing BUNDLED WITH version in the Gemfile.lock
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-3.1.2
-----> Installing dependencies using bundler 2.2.21
Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
[330, #<Thread:0x00007fc0e8b43c90 run>, #<NameError: uninitialized constant Gem::Source
(defined?(@source) && @source) || Gem::Source::Installed.new
^
最疯狂的是:我有另一个应用程序具有相同的配置,它的工作:
-----> Ruby app detected
-----> Installing bundler 2.2.21
-----> Removing BUNDLED WITH version in the Gemfile.lock
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-3.1.2
-----> Installing dependencies using bundler 2.2.21
Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
Fetching gem metadata from https://rubygems.org/.........
我目前的研究:
这似乎是2022年2月首次描述的bundler 2.3.7的问题,但我的构建包使用bundler 2.2.21,所以它应该不会受到影响?
最新的ruby-buildpack from heroku似乎已经在2021年发布了,这是真的吗?
这修复了一个应用程序的问题:
- 升级到ruby 3.1.3(通过编辑
Gemfile
和.ruby-version
中的ruby版本) - 捆绑安装
- 捆绑锁--添加平台x86_64-linux
在一次成功安装之后,我还可以回滚到升级之前的旧Ruby版本,并成功安装。
怎么会?为什么?这是怎么回事?
现在另一个曾经能正常工作的应用程序停止工作了。
1条答案
按热度按时间fnx2tebb1#
这修复了问题:
Gemfile
和.ruby-version
中的ruby版本)在一次成功安装之后,我还可以回滚到升级之前的旧Ruby版本,并成功安装。
怎么会?为什么?这是怎么回事?