“bundler:command not found:thin”heroku部署rails

时间:2012-07-05 22:21:38

标签: ruby-on-rails heroku

所以我的应用程序在我的本地机器上运行完美,并且我将它成功地推送到github和heroku但是当我尝试在浏览器中打开应用程序时,我收到以下错误:

Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

然后我尝试运行

$ heroku logs

我在控制台中收到以下输出:

2012-07-05T21:52:11+00:00 heroku[slugc]: Slug compilation started
2012-07-05T21:52:33+00:00 heroku[slugc]: Slug compilation failed: failed to compile Ruby/rails app
2012-07-05T21:53:33+00:00 heroku[slugc]: Slug compilation started
2012-07-05T21:53:55+00:00 heroku[slugc]: Slug compilation failed: failed to compile Ruby/rails app
2012-07-05T21:58:45+00:00 heroku[slugc]: Slug compilation started
2012-07-05T21:59:04+00:00 heroku[slugc]: Slug compilation failed: failed to compile Ruby/rails app
2012-07-05T22:00:34+00:00 heroku[slugc]: Slug compilation started
2012-07-05T22:01:21+00:00 heroku[api]: Add shared-database:5mb add-on by aayushgopaldawra@gmail.com
2012-07-05T22:01:21+00:00 heroku[api]: Release v2 created by username@gmail.com
2012-07-05T22:01:21+00:00 heroku[api]: Add RAILS_ENV, LANG, PATH, RACK_ENV, GEM_PATH config by aayushgopaldawra@gmail.com
2012-07-05T22:01:21+00:00 heroku[api]: Release v3 created by username@gmail.com
2012-07-05T22:01:23+00:00 heroku[api]: Release v4 created by username@gmail.com
2012-07-05T22:01:23+00:00 heroku[api]: Deploy 23effb5 by username@gmail.com
2012-07-05T22:01:24+00:00 heroku[slugc]: Slug compilation finished
2012-07-05T22:01:27+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e production -p 4606`
2012-07-05T22:01:30+00:00 app[web.1]: bundler: command not found: thin
2012-07-05T22:01:30+00:00 app[web.1]: Install missing gem executables with `bundle install`
2012-07-05T22:01:31+00:00 heroku[web.1]: Process exited with status 127
2012-07-05T22:01:31+00:00 heroku[web.1]: State changed from starting to crashed
2012-07-05T22:01:31+00:00 heroku[web.1]: State changed from crashed to starting
2012-07-05T22:01:34+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e production -p 16779`
2012-07-05T22:01:35+00:00 app[web.1]: bundler: command not found: thin
2012-07-05T22:01:35+00:00 app[web.1]: Install missing gem executables with `bundle install`
2012-07-05T22:01:36+00:00 heroku[web.1]: Process exited with status 127
2012-07-05T22:01:36+00:00 heroku[web.1]: State changed from starting to crashed
2012-07-05T22:01:37+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:38+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:49+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:49+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:50+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:51+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:51+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:51+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=

我无法弄清楚这是怎么做的,因为这是我第一次部署到heroku而且我对网络部署一无所知。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:21)

对我来说,问题是我在开发部分添加了瘦我的Gemfile,但是一旦我这样做,heroku就想用它进行生产,但不会在开发部分安装宝石。通过将精灵宝石移出开发部分以供所有环境使用,我能够克服此错误。

对于Rails应用程序,您的Gemfile可能看起来像这样:

source 'https://rubygems.org'

gem 'rails'
gem 'heroku'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'
gem 'thin'

# more gems
无论如何,

Heroku recommends thin用于生产Web服务器。

更新(2012-05-16):现在在Heroku上面的Rails 3网络服务器链接recommends unicorn。 thin仍然可以使用,但您可能需要考虑switching over to unicorn

答案 1 :(得分:2)

你可能错过了Gemfile中的一个gem。确保在Gemfile中指定了应用程序所需的所有内容,而不是在本地执行“gem install”。要验证,您可以安装RVM,专门为您的应用创建gemset,在您的应用目录中运行“bundle install”,然后查看您的应用是否在本地运行。如果它没有运行,肯定会丢失一个宝石。

答案 2 :(得分:1)

似乎heroku在没有Procfile的情况下尝试启动Thin,否则就会告诉它。如上所述,Thin未安装在Gemfile中,因此出错。如上所述,将Thin视为开发组将起作用。

如果你想让heroku启动Unicorn而不是Thin,请按照此处的说明设置你的config / unicorn.rb和你的Procfile:https://devcenter.heroku.com/articles/rails-unicorn

上面的链接中列出了Unicorn的Procfile内容,以及有关Procfile的更多信息(在应用程序的根目录中只是一个名为“Procfile”的文件):https://devcenter.heroku.com/articles/procfile