Heroku和Github集成(如何构建项目)

g33*_*z0r 24 deployment github heroku

我正在创建一个web服务,我想将源存储在github上并在heroku上运行应用程序.到目前为止,我还没有在'网上的任何地方看到过我的确切场景,所以我会在这里问:

我想拥有以下目录结构:

/project
  .git
  README <-- project readme file
  TODO.otl <-- project outline
  ... <-- other project-related stuff
  /my_rails_app
     app
     config
     ...
     README <-- rails' readme file 
Run Code Online (Sandbox Code Playgroud)

在上面,项目对应于http://github.com/myuser/project,而my_rails_app是应该推送到heroku的代码.我是否需要一个单独的分支用于rails应用程序,或者是否有一种更简单的方法,我错过了?

我想我的项目相关的非rails文件可能存在于my_rails_app中,但是rails README已经存在,并且覆盖它似乎不一致.但是,如果我离开它,我的rails应用程序的github页面将包含rails自述文件,这没有任何意义.

另外......我试着按照上面的描述进行设置并运行

git push heroku
Run Code Online (Sandbox Code Playgroud)

从主项目文件夹.当然,heroku不知道我想部署子文件夹:

-----> Heroku receiving push
 !     Heroku push rejected, no Rails or Rack app detected.
Run Code Online (Sandbox Code Playgroud)

yfe*_*lum 18

这是一个简单的解决方案,可能适用于您,也可能不适合您.

  • 在GitHub上创建两个项目.一个项目应该只是Rails应用程序(即Rails应用程序目录中的所有内容).另一个项目应该是Rails应用程序目录之外的所有内容.

  • 将Rails应用程序项目添加为"容器"项目中的git-submodule.

  • 现在,您可以单独将Heroku作为远程添加到Rails应用程序存储库中,并将其推送到heroku.Heroku将接受推送,因为它只是一个带有预期目录和文件的Rails应用程序.


Nim*_*ell 6

Heroku情况的解决方案(不是README文件):

如果您正在使用新的Heroku Cedar(我相信当您第一次提出问题时它不可用),那么您的流程(如rails服务器流程)将使用Foreman启动.因此,您可以Procfile在根github目录中放置一个如下所示:

web:     my_rails_app/script/runserver.sh
Run Code Online (Sandbox Code Playgroud)

然后my_rails_app/script/runserver.sh可能很简单

#!/bin/sh

cd my_rails_app
bundle exec rails server -p $PORT
Run Code Online (Sandbox Code Playgroud)

在本地,您还应该创建一个名为.env(注意开头的.)的文件,其中包含

PORT=3000
Run Code Online (Sandbox Code Playgroud)

该文件由foreman读取并用于设置环境变量,以便foreman start在您的机器上执行时设置端口(从根文件所在的根github目录中设置).Heroku服务器负责处理你的dyno上的.env文件.最大的优点是你可以在dyno上设置多个进程!