【问题标题】:Bundle and Gem Errors when deploying Sinatra app to heroku将 Sinatra 应用程序部署到 heroku 时出现 Bundle 和 Gem 错误
【发布时间】:2012-08-06 04:27:28
【问题描述】:

更新

我执行了以下操作,这是我仍在日志中获取的调用堆栈:

2012-08-06T12:30:57+00:00 heroku[slugc]: Slug compilation finished
2012-08-06T12:30:58+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e $RACK_ENV -p 56970`
2012-08-06T12:30:59+00:00 app[web.1]: bash: bundle: command not found
2012-08-06T12:31:00+00:00 heroku[web.1]: Process exited with status 127
2012-08-06T12:31:00+00:00 heroku[web.1]: State changed from starting to crashed
2012-08-06T12:31:08+00:00 heroku[router]: Error H10 (App crashed) -> GET arcane-garden-1058.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-08-06T12:31:08+00:00 heroku[router]: Error H10 (App crashed) -> GET arcane-garden-1058.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-08-06T12:31:09+00:00 heroku[router]: Error H10 (App crashed) -> GET arcane-garden-1058.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-08-06T12:31:10+00:00 heroku[router]: Error H10 (App crashed) -> GET arcane-garden-1058.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=

我的 Procfile 文件现在看起来像这样:

root: = ::File.dirname(__FILE__)
require: ::File.join( root, 'app' )
web: bundle exec thin start -R config.ru -e $RACK_ENV -p $PORT
run: WPL.new

Gemfile 看起来像这样:

source :rubygems
gem 'thin'
gem 'sinatra'
gem 'shotgun'
gem 'sinatra'
gem 'mongo'
gem 'json'

我的 app.rb 现在看起来像这样: 需要“霰弹枪” 需要'sinatra' 需要'mongo' 需要'json/pure'

class WPL < Sinatra::Application 
  db = Mongo::Connection.new.db('docs')


  get '/' do
    File.read(File.join('public', 'index.html'))
  end
end

config.ru 看起来像这样:

require './app'
run WPL.new

所以我正在尝试部署我的应用程序,但遇到了几个问题。在本地一切正常。我将应用程序推送到heroku,一切似乎都很好,但是当我检查日志时它说它找不到命令'bundle'。

这就是我的 Procfile 的样子。

web: bundle exec ruby app.rb -p $PORT

我尝试删除 bundle exec 并使用 ruby app.rb -p $POST 进行了进一步处理,但出现了更多错误。

我得到的下一组错误都与 gem 相关。它根本找不到任何需要的宝石。这就是我的 app.rb 的样子。

require 'shotgun'
require 'sinatra'
require 'mongo'
require 'json/pure'


db = Mongo::Connection.new.db('docs')


get '/' do
  File.read(File.join('public', 'index.html'))
end

我的 Gemfile 看起来像这样。

source :rubygems
gem 'sinatra'
gem 'shotgun'
gem 'sinatra'
gem 'mongo'
gem 'json'

我的 config.ru 看起来像这样。

require './app'
run Sinatra::Application

运行heroku run console也会导致这个错误bundle: command not found

我错过了什么?

【问题讨论】:

    标签: ruby deployment heroku sinatra


    【解决方案1】:

    您的 Procfile 没有使用您的 config.ru。

    对于 Sinatra 应用程序,我会使用如下所示的 Procfile:

    web: bundle exec thin start -R config.ru -e $RACK_ENV -p $PORT
    

    This 类似的问题也可能会有所帮助。

    【讨论】:

      【解决方案2】:

      不确定发生了什么,但我刚刚在 heroku 上删除了我的应用并创建了一个新应用。然后它起作用了。我想当我最初创建应用程序时,heroku 认为该应用程序是一个节点应用程序,因为我缺少我的 Procfile。

      【讨论】:

      • 哎呀!我正在从 Aspen 迁移到 Cedar 并遇到这个问题。我可能在没有 Procfile 的情况下进行了第一次推送。尝试删除并重新创建应用程序似乎是一场噩梦。 “认为它是一个节点应用程序”是什么意思,还有其他方法可以说服它我不是吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多