Heroku Procfile for Perfect 2.0

时间:2016-10-07 04:47:46

标签: swift heroku procfile perfect swift-package-manager

我正在尝试在Heroku上部署Perfect 2.0(使用swift包管理器)。存在current build pack for Swift 3 and Perfect 2.0,我已经测试并使用此buildpack将下面的模板成功推送到heroku应用程序而没有构建错误。特别是,我试图让Perfect's base template example - 在本地运行良好 - 部署到heroku作为概念证明。但问题是,这个构建包需要一个顶级的Procfile来通知heroku如何访问完美的服务器。在Perfect 1.0中,这个procfile只是web: perfectserverhttp --port $PORT,但是这个新的procfile perfectserverhttp不是一个可识别的命令。在我的heroku日志中,bash: perfectserverhttp: command not found出现错误。处理这个问题的适当方法是什么?即我应该如何构建我的proc文件,并使用什么命令访问我的服务器实例?我可以通过使用web: .build/debug/<given_package.swift_name>创建一个proc文件来在本地运行,但这不会转换为heroku上的部署。

1 个答案:

答案 0 :(得分:2)

我已经分叉了那个项目并制作了Heroku Button deployable version here。为了实现这一点,我检查了示例应用程序,发现构建转储了function cacheFiles(filelink, filepath, cb) { var path_array = filelink.split("/"); var foldername = path_array[path_array.length - 2] //create new folder for locally html files var newdir = filepath + '/' + foldername; if (fs.existsSync(newdir)){ alert('file already exists, cannot cache this file.'); } else { fs.mkdirSync(newdir); } //download and save index.html - THIS WORKS var indexfile = fs.createWriteStream(newdir+'/index.html'); var request = http.get(filelink, function(response) { response.pipe(indexfile); indexfile.on('finish', function() { indexfile.close(cb); }); }); //read contents of data folder - THIS DOESN'T WORK var datafolder = filelink.replace('index.html',''); fs.readdir( datafolder, function (err, datafiles) { if (!err) { console.log(datafiles); }else{ console.log(err) ; } }); 中的二进制文件,因此您的Procfile应该是:

.build/release/PerfectTemplate

注意,您还要设置 web: .build/release/PerfectTemplate --port $PORT 。如果您已经部署但在此之前失败了,那么您还需要确保扩展网络动态:$PORT