在Heroku日志中,将静态Rack站点部署到Heroku失败,并显示“未找到命令:rackup "

yzckvree  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(67)

我已经按照下面的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配置是否需要更改?或者,是其他什么?

bvhaajcl

bvhaajcl1#

在我的Gemfile中添加了“ruby“3.1.3”和“rackup”,并重新安装了捆绑包。
宝石文件:

# frozen_string_literal: true

source "https://rubygems.org"

ruby "3.1.4"

gem "rack"
gem "rackup"

字符串
这允许rackup运行。然而,一个新的错误弹出,这个问题解决了:
uninitialized constant Rack::Static (NameError) using rackup
config.ru:

require 'rack/static'

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)
  ]
}


这两件事中的一件似乎解决了最初的问题:
1.在Gemfile中声明ruby版本并再次运行bindle install
1.直接将rackup gem添加到项目中。

相关问题