[WB//Rails4]

Krok po kroku odkrywamy Heroku

[heroku handles headache]

źródło: Heroku handles headache

Informacje z Heroku Dev Center:

Heroku (pronounced her-OH-koo) is a cloud application platform for Ruby – a new way of building and deploying web apps.

Swoje aplikacje Rails będziemy wdrażać na Heroku za pomocą programu heroku, który musimy najpierw zainstalować. W tym celu wchodzimy na stronę

https://toolbelt.heroku.com/

z której pobieramy paczkę z programem.

Następnie zakładamy na Heroku konto (tzw. „free plan”), przesyłamy swój klucz publiczny na Heroku i logujemy się na swoim koncie:

heroku keys:add
heroku login

Tworzymy aplikację Rails 4.x

Tworzymy rusztowanie aplikacji korzystając z generatora new:

rails new foo

Dopisujemy grupę :production do Gemfile. Takie gemy, mniej więcej takie wersje, powinien zawierać plik Gemfile:

Gemfile
source 'https://rubygems.org'

gem 'rails', '4.0.3'

group :development do
  gem 'sqlite3', '1.3.8'
end

gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

Dopisujemy swoje gemy i instalujemy wszystko za pomocą:

bundle install --without production # --local

Wdrażanie aplikacji na Heroku

Aplikację foo wdrażamy w czterech krokach.

1. Tworzymy repozytorium Git z kodem aplikacji:

cd foo
git init
git add .
git commit -m "pierwsza wersja"

2. Tworzymy nową aplikację na Heroku:

heroku create

  Creating afternoon-tor-6637... done, stack is cedar
  http://afternoon-tor-6637.herokuapp.com/ | git@heroku.com:afternoon-tor-6637.git
  Git remote heroku added

3. Wdrażamy naszą aplikację z gałęzi master na Heroku:

git push heroku master

4. Pozostałe rzeczy, to utworzenie bazy danych na Heroku:

heroku run bin/rake db:migrate

Przy okazji możemy też zmienić wygenerowaną nazwę aplikacji z afternoon-tor-6637 na jakąś inną, przykładowo na herring:

heroku rename herring

Odpowiedź Heroku powinna być taka:

Renaming piece to herring... done
http://herring.herokuapp.com/ | git@heroku.com:herring.git
Git remote heroku updated

Uwaga: Nazwa zostanie zmieniona o ile na Heroku nie istnieje aplikacja o podanej nazwie.

Podręczna dokumentacja

SQLite ⇄ PostgreSQL

Jak? Push and Pull Databases To and From Heroku:

gem install taps
heroku db:push sqlite://db/development.sqlite3 --confirm APP-NAME-ON-HEROKU
heroku db:pull sqlite://db/production.sqlite3

Aby konwersja zadziałała potrzebne są określone wersje gemów.

Rails Environment Variables

Artykuł o tym „Keeping Environment Variables Private”. Na przykład klucze aplikacji zarejestrowanej na Twitterze, Githubie, Facebooku…