1

更新

我做了以下事情,这是我仍在日志中的调用堆栈:

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 现在看起来像这样: require 'shotgun' require 'sinatra' require 'mongo' require '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 execruby 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

我错过了什么?

4

2 回答 2

0

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

于 2012-08-07T03:10:27.740 回答
0

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

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

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

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

于 2012-08-06T06:42:04.267 回答