我正在创建一个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
在上面,项目对应于http://github.com/myuser/project,而my_rails_app是应该推送到heroku的代码.我是否需要一个单独的分支用于rails应用程序,或者是否有一种更简单的方法,我错过了?
我想我的项目相关的非rails文件可能存在于my_rails_app中,但是rails README已经存在,并且覆盖它似乎不一致.但是,如果我离开它,我的rails应用程序的github页面将包含rails自述文件,这没有任何意义.
另外......我试着按照上面的描述进行设置并运行
git push heroku
从主项目文件夹.当然,heroku不知道我想部署子文件夹:
-----> Heroku receiving push ! Heroku push rejected, no Rails or Rack app detected.
yfeldblum.. 18
这是一个简单的解决方案,可能适用于您,也可能不适合您.
在GitHub上创建两个项目.一个项目应该只是Rails应用程序(即Rails应用程序目录中的所有内容).另一个项目应该是Rails应用程序目录之外的所有内容.
将Rails应用程序项目添加为"容器"项目中的git-submodule.
现在,您可以单独将Heroku作为远程添加到Rails应用程序存储库中,并将其推送到heroku.Heroku将接受推送,因为它只是一个带有预期目录和文件的Rails应用程序.
Nimrod Priel.. 6
Heroku情况的解决方案(不是README文件):
如果您正在使用新的Heroku Cedar(我相信当您第一次提出问题时它不可用),那么您的流程(如rails服务器流程)将使用Foreman启动.因此,您可以Procfile
在根github目录中放置一个如下所示:
web: my_rails_app/script/runserver.sh
然后my_rails_app/script/runserver.sh
可能很简单
#!/bin/sh cd my_rails_app bundle exec rails server -p $PORT
在本地,您还应该创建一个名为.env
(注意开头的.)的文件,其中包含
PORT=3000
该文件由foreman读取并用于设置环境变量,以便foreman start
在您的机器上执行时设置端口(从根文件所在的根github目录中设置).Heroku服务器负责处理你的dyno上的.env文件.最大的优点是你可以在dyno上设置多个进程!
这是一个简单的解决方案,可能适用于您,也可能不适合您.
在GitHub上创建两个项目.一个项目应该只是Rails应用程序(即Rails应用程序目录中的所有内容).另一个项目应该是Rails应用程序目录之外的所有内容.
将Rails应用程序项目添加为"容器"项目中的git-submodule.
现在,您可以单独将Heroku作为远程添加到Rails应用程序存储库中,并将其推送到heroku.Heroku将接受推送,因为它只是一个带有预期目录和文件的Rails应用程序.
Heroku情况的解决方案(不是README文件):
如果您正在使用新的Heroku Cedar(我相信当您第一次提出问题时它不可用),那么您的流程(如rails服务器流程)将使用Foreman启动.因此,您可以Procfile
在根github目录中放置一个如下所示:
web: my_rails_app/script/runserver.sh
然后my_rails_app/script/runserver.sh
可能很简单
#!/bin/sh cd my_rails_app bundle exec rails server -p $PORT
在本地,您还应该创建一个名为.env
(注意开头的.)的文件,其中包含
PORT=3000
该文件由foreman读取并用于设置环境变量,以便foreman start
在您的机器上执行时设置端口(从根文件所在的根github目录中设置).Heroku服务器负责处理你的dyno上的.env文件.最大的优点是你可以在dyno上设置多个进程!