我正在创建一个 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 

上式中,project对应的是 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.
有帮助吗?

解决方案

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

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

  • 将 Rails 应用程序项目添加为“容器”项目中的 git 子模块。

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

其他提示

一个用于Heroku的情况(未自述文件)溶液:

如果您使用的是新的的Heroku雪松(我相信这是不可用的时候你首先问你的问题),那么你的进程(如导轨服务器进程)启动使用工头。因此,可以放置一个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

本文件由工头读取和使用来设置环境变量,这样当你(从根目录GitHub的,其中Procfile谎言),你的机器上执行foreman start端口设置。 Heroku的服务器发生在你的赛道照顾.ENV文件。最大的好处是你可以设置多个进程的赛道那样!

只需覆盖Rails的默认README文件。没有理由保留它周围。把你的其他项目管理相关的东西在doc目录。虽然你肯定有想将它设置你做,你只是以违背约定为自己创造一个头疼的途径正当理由,而且它可能不值得的好处。

我想补充/my_rails_app下方一切Heroku的git仓库。然后加入GitHub上为远程和添加/project下方一切GitHub的仓库。然后,你可以把Rails应用程序来的Heroku(从/my_rails_app),推动整个项目到GitHub上(从/project)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top