我已经按照下面的Heroku帖子创建和部署了一个静态的基于Rack的网站:https://devcenter.heroku.com/articles/static-sites-ruby
下面是我的配置:
宝石文件:
# frozen_string_literal: true
source "https://rubygems.org"
gem "rack"
字符串
config.ru:
use Rack::Static,
:urls => [
"/assets/scss/base",
"/assets/scss/themes",
...
],
:root => "public"
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
型
过程文件:
web: bundle exec rackup config.ru -p $PORT
型
我可以很好地部署到Heroku。但是,当我尝试打开应用程序时,我得到以下错误:
2023-11-07T16:37:21.427599+00:00 heroku[web.1]: State changed from crashed to starting
2023-11-07T16:37:22.915905+00:00 heroku[web.1]: Starting process with command `bundle exec rackup config.ru -p 54175`
2023-11-07T16:37:23.722932+00:00 heroku[web.1]: Process exited with status 127
2023-11-07T16:37:23.632062+00:00 app[web.1]: bundler: command not found: rackup
2023-11-07T16:37:23.632097+00:00 app[web.1]: Install missing gem executables with `bundle install`
2023-11-07T16:37:23.749287+00:00 heroku[web.1]: State changed from starting to crashed
型
最初我没有Procfile,因为这篇文章中没有描述。听起来Heroku只是假设我需要的Dyno配置。然而,在部署到Heroku之后,我可以在Heroku控制台中看到它希望我添加Procfile。
我重新运行了bundle install来确认一下,但是没有对任何文件进行任何修改。
是否需要一个额外的gem?我的Procfile配置是否需要更改?或者,是其他什么?
1条答案
按热度按时间bvhaajcl1#
在我的Gemfile中添加了“ruby“3.1.3”和“rackup”,并重新安装了捆绑包。
宝石文件:
字符串
这允许rackup运行。然而,一个新的错误弹出,这个问题解决了:
uninitialized constant Rack::Static (NameError) using rackup
config.ru:
型
这两件事中的一件似乎解决了最初的问题:
1.在Gemfile中声明ruby版本并再次运行bindle install
1.直接将rackup gem添加到项目中。