在Sinatra app heroku推送中“没有检测到Procfile”

时间:2014-06-14 19:25:36

标签: heroku sinatra procfile

我是Sinatra和heroku的新人。我正在尝试将一个小的Sinatra应用程序推送到heroku,我收到了这个错误,

 Bundle completed (24.34s)
   Cleaning up the bundler cache.
-----> WARNINGS:
       No Procfile detected, using the default web server (webrick)
       ##I have gone over the docs a few times and added unicorn 
       https://devcenter.heroku.com/articles/ruby-default-web-server
-----> Discovering process types
       Procfile declares types -> (none)
       Default types for Ruby  -> console, rake, web

-----> Compressing... done, 17.5MB
-----> Launching... done, v8

这是我的宝石文件的样子

   source 'https://rubygems.org'
   ruby '2.1.1'
   gem 'sinatra'
   gem 'sinatra-contrib'
   gem 'typhoeus'
   gem 'pry'
   gem 'rspec'
   gem 'pg'
   gem 'unicorn'
   gem 'thin', '1.2.7'

我尝试过很多我在网上看过的东西,但这个错误仍然存​​在。对不起,如果这是一个愚蠢的问题,但它让我疯了!如果您想在应用程序中看到更多文件,我会很乐意添加它们,我只是不确定要添加的内容..

感谢您的时间,感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

Procfile告诉Heroku您的应用程序可以运行的不同进程类型(命令)。对于Ruby应用程序,Heroku希望您声明至少一个web进程类型,并且默认情况下还会自动启动另外两个进程:rakeconsole

这意味着您的Ruby应用程序应该能够运行Web进程(这是实际提供网页和资产的过程),运行rake任务,并为您提供类似shell的控制台(访问权限)通过在应用的顶层运行heroku run console来实现它。

您需要做的就是将一个名为Procfile的空白文本文件添加到您应用的顶级文件夹中,只需一行代码(如果您使用的是Rack):

web: bundle exec rackup config.ru -p $PORT

或者如果您使用纯Sinatra(没有Rack):

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

你应该真正阅读Heroku开发中心的Define a ProcfileThe Procfile以清除任何混淆。