Herokuまでの接続

Git

最初の実行できる環境でソース管理のGitをインストールします。環境によって各リンクを提供しています。ほとんどコマンドで実行します。

  • LinuxのUbuntuの場合:
$ apt-get install git
  • Mac OSXの場合:Homebrewの通りインストール:
$ brew install git
  • Windows:http://msysgit.github.ioでパッケージをダウンロードし、実行ファイルをクリック…

環境確認

  • Herokuのアカウントを登録します。無料でHerokuアカウントを登録できます
  • Ruby2.2.4をインストールしたのか確認、OSXWindowsLinuxに該当インストールマニュアルがあります。
  • ロカルにBundleをインストールしたのか確認、コマンドでこのgemをインストールできます:
gem install bundler

Setup

ダウンロードHeroku ToolbeIt、Herokuコマンドラインです。各システムをパッケージがあります。

インストールしてから、herokuコマンドでログインできるのか確認

$ heroku login
Enter your Heroku credentials.
Email: hminhduc@gmail.com
Password:
...

クロンMisuzu

アカウントを登録成功したら、現行ウェッブを参加招待しソースはロカルマシンにクロンできます。

$ heroku git:clone -a misuzu
$ cd misuzu

この段階まで、ロカルマシンにMisuzuのソースがサーバからコピー出しました。このソースで開発してから、変更したソースをサーバに反映した場合デプロイ必要になります。次のデプロイ手順です。

Deploy

$ git add .
$ git commit -am "変更したコメント"
$ git push heroku master
Fetching repository, done.
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 876 bytes | 0 bytes/s, done.
Total 6 (delta 4), reused 0 (delta 0)

remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.2.4
remote: -----> Installing dependencies using 1.7.12
remote: Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote: Fetching gem metadata from https://rubygems.org/...........
remote: Fetching additional metadata from https://rubygems.org/..
remote: Using rake 10.4.2
....
remote: Bundle completed (38.43s)
remote: Cleaning up the bundler cache.
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote: Default types for Ruby -> console, rake, worker
remote:
remote: -----> Compressing... done, 30.7MB
remote: -----> Launching... done, v16
remote: https://pacific-river-8854.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To git@heroku.com:polar-inlet-4930.git
2e435c5..035d5f5 master -> master

ここまで、変更した分はサーバにデプロイ成功できました。毎回デプロイする際、このログも成功できたのか、失敗したのか確認できます。

変更したソースの運用を確認した場合、下記のコマンドでウェブを開けます:

$ heroku open

ログを確認

$ heroku logs --tail
2014-07-07T11:42:26.829065+00:00 heroku[web.1]: Starting process with command bundle exec puma -C config/puma.rb
2014-07-07T11:42:35.334415+00:00 app[web.1]: I, [2014-07-07T11:42:35.334301 #2] INFO -- : listening on addr=0.0.0.0:19146 fd=9
2014-07-07T11:42:35.707657+00:00 app[web.1]: I, [2014-07-07T11:42:35.707293 #5] INFO -- : worker=0 ready
2014-07-07T11:42:35.772074+00:00 app[web.1]: I, [2014-07-07T11:42:35.771727 #11] INFO -- : worker=2 ready
2014-07-07T11:42:35.767750+00:00 app[web.1]: I, [2014-07-07T11:42:35.764688 #2] INFO -- : master process ready
2014-07-07T11:42:35.777268+00:00 app[web.1]: I, [2014-07-07T11:42:35.777006 #8] INFO -- : worker=1 ready
2014-07-07T11:42:35.618291+00:00 heroku[web.1]: State changed from starting to up

サーバ長期運用した場合、ログサイズがどんどん増えて、ログをクリアしたい場合:

$ heroku run rake log:clear

pgコマンドを実行

サーバのデータベースをコマンとで管理できます。下記のコマンドでPGコマンド環境に入ります、

$ heroku pg:psql
---> Connecting to DATABASE_URL
psql (9.4.5, server 9.4.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

misuzu::DATABASE=> select * from 駅マスタ;
駅コード | 駅名 | created_at | updated_at
----------+--------+----------------------------+----------------------------
03854 | 新神戸 | 2015-11-18 10:39:09.995299 | 2015-11-18 10:39:09.995299.995299
03408 | 三宮 | 2015-11-18 10:39:10.004314 | 2015-11-18 10:39:10.004314
07701 | 元町 | 2015-11-18 10:39:10.011487 | 2015-11-18 10:39:10.011487
01323 | 大阪 | 2015-11-18 10:39:10.019073 | 2015-11-18 10:39:10.019073
(4 rows)

misuzu::DATABASE=>

サーバデータベースのマイグレーション

ロカルのマイグレートファイルが変更追加等をした場合、その変更はサーバに反映したい場合は下記のコマンとで実行:

$ heroku run rake db:migrate
$ heroku run rake db:seed

他の関連設定及び必要トール

Dropboxのインストール

Ubuntu Software CenterからDropboxを検索し、一覧の結果からインストールします。

Rubyのインストール

  • 環境の準備、最新ものを確認します。下記の2つコマンドでTerminalにコピーして実行しましょう。
sudo apt -get update  
sudo apt -get install git -core curl zlib1g -dev build -essential libssl -dev libreadline -dev libyaml -dev libsqlite3 -dev sqlite3 libxml2 -dev libxslt1 -dev libcurl4 -openssl -dev python -software -properties
  • rvm をインストールします。順番に下記のコマンドで実行しましょう。
sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev  
curl -L https://get.rvm.io | bash -s stable
source /.rvm/scripts/rvm
echo "source /.rvm/scripts/rvm" >> ~/.bashrc
rvm install 2.1.2
rvm use 2.1.2 --default
ruby -v
  • Rubygemsのインストールの際、スピードを撮れる為Gemのドキュメントが要らないのでriを除外します:
echo "gem: --no-ri --no-rdoc" > ~/.gemrc

Railsのインストール

  • Railsのインストール前にNodeJSをインストールします:
sudo add-apt-repository ppa:chris-lea/node.js  
sudo apt-get update
sudo apt-get install nodejs
  • Railsをインストール
gem install rails
  • Railsのインストールが終了したらバージョンを確認します
rails -v

Postgresqlをインストール

$ sudo apt-getinstall postgresql postgresql-client libpq-dev

Pgのインストールが完了しましたら、PgへLoginしてみます:

$ sudo-u postgres psql

注意:qを打ったらplsqlを完了します 
Plsql環境に下記のコマンド実行してみます

SELECT*FROM pg_user;

結果は下記の例の場合があります:

USENAME USESYS IDUSECREATEDB USESUPER USECATUPD PASSWD VALUNTIL USECONFIG   
postgres 10 t t t  ********
(1 row)

データベースユーザを作成

$ sudo -u postgres createuser yayoi -s

ALTER USER yayoi CREATEUSER CREATEDB; 
ユーザのパスワードの変更

sudo  -u postgres psql
postgres = # \password yayoi
  • データベースの作成
CREATE DATABASE yayoi WITH ENCODING='UTF8' OWNER=yayoi CONNECTION LIMIT=25;

リモートでPGへのアクセス 
pghbd.confファイルに下記のラインを追加(IPはアクセスしたいクライアンのIPです)

ubuntu: /etc/postgresql/9.3/main/pg\_hba.conf
vi /var/lib/pgsql/data/pg_hba.conf
host all all 192.168.101.20/24 trust
  • リスナーアドレスの変更、postgresql.confを編集

<! — # grep listen /var/lib/pgsql/data/postgresql.conf →

listen_addresses = ‘*’
  • コマンドでデータベースをstart,stop
sudo launchctl start com.edb.launchd.postgresql-9.3
sudo launchctl stop com.edb.launchd.postgresql-9.3
  • or
sudo service postgresql restart  
sudo service postgresql start
sudo service postgresql stop
  • Gem pg install (for MAC OSX)
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Then create a user (or a “role”, as Postgres calls it):

create role myapp with createdb login password 'password1';

Once configured, your database.yml should contain something like this:
You can then run:

rake db:setup

Railsの設定

  • Gemfileに下記の行を追加されます
gem "pg"
  • ウエブフォルダはロカールにコピーします。例えば:
/home/cmc/jpt
  • terminalでのcdコマンドを使用し、jptフォルダに移動します:
$ cd /home/cmc/jpt
  • 今bundleを更新します
$ bundle install

Startサーバ

rails s

Database Tool Install

Navicatのインストール 
ホームページで開いてLinuxの所にダウンロードリンクがあります:

www.navicat.com/download/navicat-premium

ダウンロードしたファイル名称は:

navicat110_premium_en.tar.gz

このファイルはLinuxでのArchiveトールはロカルに展開してください。
例えばこちらの場合:

/home/cmc/Application/navicat110_premium_en

startnavicatをTerninalにドラグ・ドロプしてインストールします:

$sudo '/home/cmc/Application/navicat110_premium_en/start_navicat

rake

rails generate controller Shozai index

(for revert generate command)

rails d controller Shozai index
rails generate model Article title:string text:text

(for revert generate command)

rails d model Article title:string text:text

(will create a migrate file according with that field in database and full MVC related)

rails g scaffold Person first_name:string last_name:string
rake db:migrate

rollback

rake db:migrate:down VERSION=20100905201547

Create a new migration and run rake db:migrate

rails g migration change_table

To overrite existing file user — force option

rails g migration employer --force

View router path in current web app

rake routes

Create a seeds.rb on db folder and write insert code to auto insert data to table

rake db:seed

rails

rails server -e production
  • To create a new Rails application to use PostgreSQL:
$ rails new myapp --database=postgresql
  • Kill server
kill -9 processid
  • Precompile production mode
RAILS_EVN=production rake assets:precompile
  • Heroku
heroku login
heroku git:clone -a misuzu
cd misuzu
git add .
git commit -am "Make it better"
git push heroku master
heroku open
  • Using the figaro command, you can set values from your configuration file all at once:
$ figaro heroku:set -e production
  • cancancan
rails g cancan:ability

→create app/models/ability.rb

  • Run Rspec
$ rake spec
  • Imp Exp data in pg
  • Exp
Duc:~ duc$ pg_dump -U duc duc > duc.pgsql
  • Imp
psql -U USERNAME DBNAME < duc.pgsql

Install responder

gem "responders"
$ bundle install
$ rails g responders:install
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.