利用Heroku将你的程序部署到网络上

作者: Terence Lee, @hone02

下载Heroku

参照 quickstart guide 的三个步骤,注册,安装toolbelt,并登录。

教练: 谈谈部署到Heroku相对于传统主机托管服务的优越性。

准备好你自己的程序

更新我们的数据库

首先,由于Heroku使用PostgreSQL而不是SQLite,我们需要修改Gemfile才能使数据库在Heroku上运行。请修改以下代码:

gem 'sqlite3'

将它改为:

group :development do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

运行 bundle install --without production 来加载程序所依赖的库。

教练: 请谈谈RDBMS,并举几个具体的例子。

版本控制系统(Version Control Systems)

我们需要把代码加入版本控制系统中去。您可以在控制台中运行:

git init
git add .
git commit -m "initial commit"

教练: 现在该是时候谈谈版本控制系统和git了。

部署你的程序

创建Heroku App

我们需要创建一个Heroku App,在控制台中键入 heroku create --stack cedar ,得到如下输出:

Creating evening-sky-7498... done, stack is cedar
http://evening-sky-7498.herokuapp.com/ | git@heroku.com:evening-sky-7498.git
Git remote heroku added

在这个例子中 “evening-sky-7498” 是你的Heroku App的名字

Push您的代码

接下来我们需要把代码push到Heroku上,键入 git push heroku master. 您将看到以下输出:

Counting objects: 134, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (115/115), done.
Writing objects: 100% (134/134), 35.29 KiB, done.
Total 134 (delta 26), reused 0 (delta 0)

-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.1.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
       Fetching gem metadata from https://rubygems.org/.......
...
-----> Launching... done, v4
       http://evening-sky-7498.herokuapp.com deployed to Heroku

当您看到“Launching…”这一行文本的时候,我们就知道程序已经被push完毕了。

迁移数据库

接下来我们需要迁移(migrate)数据库,就像在工作室中练习过的一样: heroku run rake db:migrate

指令执行完毕后,您就可以用上面生成的URL访问您的程序了,在本例中,URL是: http://evening-sky-7498.herokuapp.com/. 也可以在控制台中键入 heroku open ,这会直接用您默认的浏览器打开以上URL。