提问人:user3457760 提问时间:6/15/2014 更新时间:12/21/2018 访问量:1871
Sinatra 应用程序 heroku 推送中的“未检测到 Procfile”
"No Procfile detected" in Sinatra app heroku push
问:
我是 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
这是我的 gem 文件的样子
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'
我尝试了很多我在网上看到的东西,但仍然出现这个错误。对不起,如果这是一个愚蠢的问题,但它让我发疯!如果您想在应用程序中查看更多文件,我很乐意添加它们,我只是不确定要添加哪些文件。
感谢您抽出宝贵时间,感谢您的帮助。
答:
6赞
Arman H
6/15/2014
#1
Procfile
告诉 Heroku 您的应用程序可以运行的不同进程类型(命令)。对于 Ruby 应用程序,Heroku 希望您至少声明一个进程类型,并且默认情况下还会自动启动两个额外的进程:和 。web
rake
console
这意味着你的 Ruby 应用应该能够运行一个 Web 进程(这是实际提供网页和资产的进程),运行任务,并为你提供一个类似 shell 的控制台(通过在应用的顶层运行来访问它)。rake
heroku run console
您需要做的就是添加一个名为应用顶级文件夹的空白文本文件,只需一行代码(如果您使用的是 Rack):Procfile
web: bundle exec rackup config.ru -p $PORT
或者,如果您使用的是纯 Sinatra(不带 Rack):
web: bundle exec ruby web.rb -p $PORT
你真的应该阅读 Heroku 开发中心中的 Define a Procfile 和 The Procfile 来消除任何混淆。
评论