上传专案到 Heroku(原版)

目的:

上传专案到 Heroku

步骤 1:开新 Heroku 应用程式

请确认你的终端机,目前所处目录是first_app子目录。

然后在终端机打这些字:

heroku create

荧幕快照 2016-07-04 下午10.02.42.png荧幕快照 2016-07-04 下午10.02.42.png

然后 git push heroku master

荧幕快照 2016-07-04 下午10.03.16.png荧幕快照 2016-07-04 下午10.03.16.png

提示开发者并没有安装 sqlite3。

荧幕快照 2016-07-04 下午10.03.43.png荧幕快照 2016-07-04 下午10.03.43.png

这时候请不要傻傻的安装 sqlite3。

Heroku 的正式环境里面,资料库其实并不支援 sqlite3,而是有自定义的资料库 pg。不过关于这段的解释太专业了,初入门的朋友可能看不懂,我们这里只先谈,如何绕过这个错误讯息。让你的网站可以顺利部署上 Heroku。


步骤 2: 修改 Gemfile

请在终端输入:cd first_app,按[enter]
输入:atom . 按[enter] 就可以成功开启专案的档案群

在编辑器里打开 Gemfile 这个档案,按 command + x 将第 7 行的 gem 'sqlite3' 剪切

把 sqlite3 粘贴到这个 group :development, :test do 里面。

新增一个 production group,加上 pg 这个 gem 放在教程最后

按 command + s 存档。


步骤 3:套用 Gemfile 的异动

然后在终端机执行这些指令

  • bundle install

每当你改 Gemfile 的时候,你都要跑一次 bundle install,这样子异动才会被套用。套用之后的异动会被存在另一个档案 Gemfile.lock。


步骤 4:把 Gemfile 的异动 commit 进 git

在终端机输入:

  • git add Gemfile
  • git add Gemfile.lock
  • git commit -m "move sqlite3 to dev group & add pg to production group "

步骤 5:上传到 Heroku

在终端机输入:

  • git push heroku master

荧幕快照 2016-07-04 下午10.16.11.png荧幕快照 2016-07-04 下午10.16.11.png

荧幕快照 2016-07-04 下午10.15.39.png荧幕快照 2016-07-04 下午10.15.39.png

小提示:因为heroku为远端连结,需要等待一段时间,如果无法连上,可以尝试换一个VPN再操作。

设定根目录

然后我们可以在终端机输入 heroku open 打开网站。

不过映入眼帘的却是:

荧幕快照 2016-07-04 下午10.21.07.png荧幕快照 2016-07-04 下午10.21.07.png

这是因为我们没有在 config/routes.rb 下设定首页。
在first_app档案夹下,输入 atom . 可以用atom开启这个项目的所有档案,在atom里找到 config 资料夹,点开找到 routes.rb 档案

在第3行加入:

root "topics#index"

让首页根目录指到 topics 的 index 一览页。

之后我们一样执行:

  • git add .
  • git commit -m "add root path"

荧幕快照 2016-07-04 下午10.23.57.png荧幕快照 2016-07-04 下午10.23.57.png

再执行:

git push heroku master
heroku open

映入眼帘的还是错误讯息,只是这次变成:We're sorry, but something went wrong.

荧幕快照 2016-07-04 下午10.25.44.png荧幕快照 2016-07-04 下午10.25.44.png

我们可以使用 heroku logs,观看 heroku 上的错误:

荧幕快照 2016-07-04 下午10.26.35.png荧幕快照 2016-07-04 下午10.26.35.png

发现错误的讯息在于 heroku 上面的 topics 资料库栏位,似乎并不存在。

原来我们忘记跑了一个指令叫:heroku run rake db:migrate

荧幕快照 2016-07-04 下午10.28.17.png荧幕快照 2016-07-04 下午10.28.17.png

跑完再 heroku open,看到这个画面,就表示一切顺利运行了。恭喜你,你有了第一个可以在公开空间上运行的论坛 App!

荧幕快照 2016-07-04 下午10.30.51.png荧幕快照 2016-07-04 下午10.30.51.png

提示:假如你在5-3的章节中新增了一条(或者很多条)topic,但是你却看到 heroku 上的这个 app 里面的数据是空的,这是正常情况,因为我们部署到 heroku 的时候这些数据并不会被上传。


deploy 新版程式的方法

步骤 1:把所有异动都 commit 进 git

Heroku 只受理我们有 commit 进本地 git repo 的程式,所以要确定修改过的档案都有 commit 进去了。

在终端机打这些字:

git status

git status 显示你还没 commit 进 git 的异动。如果没有输出任何东西的话,那你可以 deploy 了!不然的话就要 commit 程式码进去:

在终端机打这些字:

git add .

git commit -m "Some helpful message for your future self"

git commit -m 称为 Commit message 内容要写的是: "简要描述你这次操作修改了什么/做了什么事"


步骤 2:把异动 push(上传)到 Heroku

在终端机打这些字:

git push heroku master

这样子会把本地所有已经 commit 进去的异动都 push 到 Heroku。


步骤 3:在 Heroku 跑资料库的 migration

在终端机打这些字:

heroku run rake db:migrate

这是叫 Heroku 在它的资料库跑 migration,作用就像我们在本地跑 rake db:migrate

Heroku 的资料库跟你电脑上的资料库是分开的,也就是说每一次你更改了资料库的结构,你都要在 Heroku 的资料库更新一次。这也就是说在 Heroku 上面你不会看到你电脑上的 sqlite3 资料库里面的资料。


步骤 4:上网看你的程式

在终端机打这些字:

heroku open

会在浏览器打开你上传到 Heroku 的程式。