Herokuデプロイ手順

前提条件

  • Railsプロジェクトが対象(1のGem以外は共通だろうけど
  • ソースをGit管理していること

1. Gemに以下を追加

group :production do
  gem 'pg'
end

※これは本番環境だけに必要なものなので'production'でグルーピングしている

HerokuはDBがSQLiteをサポートしてないため
sqliteのGemはdevelopmentグループへ入れること。

2. 上記Gemインストール

ローカル環境にはインストールしない設定でGemfile.lockを更新するのが目的。

 % bundle install --without production

3. PCにHeroku環境があるか確認。無ければHerokuCLIをインストール。

% heroku version

HerokuCLIのインストールは以下。Macであればhomebrewで簡単インストール

toolbelt.heroku.com

4. Heroku ログイン

% heroku login
% heroku keys:add

Herokuユーザー登録がまだであれば以下で登録。 本人確認にクレジットカード番号が必要だったはず。基本無料だけどちょい不安なるよね

signup.heroku.com

5. Herokuにアプリケーション作成

% heroku create

6. Herokuデプロイ

% git push heroku master

7. Heroku上のDB作成、更新(デフォルトDBはPostgreSQL)

% heroku run rails db:migrate

8. Heroku上で確認。以下コマンド打つとブラウザで開いてくれて便利

% heroku open

※動かない場合、heroku logsとコマンドで打つとログ見れますが
エラー原因不明の場合はとっとと作り直したほうが早いです。たまにあるそうです。
僕もなったことありますエラーコードH10。作り直したら動きました。

mintestでの遷移テスト

mintestでは status_codeを利用。でもキャッシュには注意!!

Railsでのテストコードに関して

これまではrspecを利用してテストしていた。
が、現在Railsに標準でつくのはminitestになっている。
できるだけ、標準を使うべきという指摘もあり。 また自分もそう思うのでminietstへ移行してみた。

minitestへの移行

まずはシステムテストを書こうと思ったんだけど
scaffoldで作成時に、自動で書いてくれるコードを見ても遷移テストがない。見落としてるかもだけど。
assert_responseだと思ったけど情報少なかったので残す。 rspecはあるんだけどね。

minitestでの遷移テスト

やりたいことrspecだと

visit root_url
expect(page).to have_http_status(:success)

minitestだと

visit root_url
assert_equal 200, status_code

:success とか用意されてると嬉しいよね。 200番台ならば成功と判断できるやつ。

これでうまくいくと思ったら304が返って来てうまく行かなかった。 原因調べたらどうもpoltergeistの仕様でキャッシュ使っちゃうようで 304ステータス:エラーじゃないけど更新されてないよ。キャッシュがあるよ〜。

ということで

page.driver.clear_memory_cache

を事前に書いておけばキャッシュがクリアされて期待する200コードが返ってきました\(^o^)/

PostgreSQLのDBクライアント(Mac)

PSequelがインストールも楽で、使い勝手も良さそう

読みはピーシクォルらしいよ

探した理由

  • Postgresqlを使ったRailsアプリを触っている
  • 知らないDBの全体像を把握するのにコンソールだとかなりつらい
  • MacでDBクライアント使ったことねぇ。Winは色々経験ある

オススメ理由

  • インストールが簡単。Homebrewで一発!
  • 操作感もシンプルで簡単。他のDBクライアント使用経験あれば問題なし。
  • 今回ローカル接続だけど、SSLSSHも対応しててサーバーアクセスも十分対応できそう

インストール方法

  • 前提 Homebrewが入っていること
  • 以下コマンド実行
$ brew cask install psequel
  • 以上だ。アプリケーションにPsequelのアイコンがあるはず


■ 本家 PSequelサイト
www.psequel.com

■参考サイト
Mac の MySQL クライアントに「Sequel Pro」を使っているなら PostgreSQL クライアントは「PSequel」がオススメ - akiyoko blog
各種DBのMac用GUIクライアント - komagataのブログ

FJORD Meetupに参加しました

5月FJORD Meetupにようやく参加できました。初参加です(^^)
用事があった月は仕方ないですが、先月は接続して準備万端と思いきや
そのタイミングで電話がかかってきて、結局そのまま参加できませんでした(T_T)
いやまぁ今回も冒頭で電話かかってきて若干遅刻でしたが。

時間は19:30から21:30まで、appear.inでアクセス。
アサヒスーパードゥラァイ!!を片手に唐揚げつまみながらでした。

今回総勢で12名かな。和気藹々に色々な話が聞けて良かったです。
東京でないと直接会うことがないですし、こういう機会があるのはありがたいですね。
雰囲気感じられるのも大事ですよね。
会場では深セン土産の小型ドローン飛んでましたw

会場とのやり取りは若干タイムラグがありやりづからったですが
考えてみたらうちのマンションは夕方から1Mでないクソ通信速度になるので
それが原因ぽいな(^_^;)

以下、当日画像です。
f:id:nishide-h:20180516173942j:plain

ローカル参加(FJORDメイン会場)が画像右側ですね。
画像左側2名が別箇所からのアクセスです。

正直画像は、笑い男を使ってみたかっただけだったり♪

rbenvでインストールに失敗する(macOS High Sierra)

rbenvでRubyをインストールしようとしたらエラーになったので解決方法

失敗したバージョンは2.5.1。前も2.5.0で同じ方法を使ったような。

発生環境

macOS High Sierra
Homebrewインストール済み
rbenvインストール済み

現象

以下コマンドでインストールしようとしたらエラー

$rbenv install 2.5.1
エラー画像

撮り忘れた次回貼ります(^_^;)

解決策

ruby-buildのコンフィギュアーオプションで以下を指定してインストール実行

$RUBY_CONFIGURE_OPTS="--disable-dtrace" rbenv install 2.5.1

rbenvコマンド覚書き

rbenvとは

RVM(RubyVersionManager)の後継。
名前から分かる通り、Rubyのバージョンを管理するためのアプリ。
Rubyを複数バージョンインストールでき、切り替えることができる。

前提

HomeBrewがインストールされていること。

インストール

brew install rbenv

コマンド

バージョン確認
$rbenv -v
現在使用しているRubyのバージョン確認
$rbenv -version
rbenvでインストール済みのRubyのバージョンを一覧表示(現在のデフォルト指定もわかる)
$rbenv -versions
rbenvでインストール可能なバージョンを一覧表示
$rbenv install -l
指定バージョンをインストール
$rbenv install バージョン
デフォルトで使用するバージョンを指定
$rbenv global バージョン
カレントディレクトリで使用するをバージョン指定
$rbenv local バージョン
バージョン切り替え時に必要なコマンド。

スクリプト(gem, rake等)が使う各バージョンのコマンドを使えるようにしてくれる。

$rbenv rehash

aptとは?

apt(Advanced Packaging Tool)とは、DebianLinuxディストリビューション)用に
作られたパッケージ管理システムのこと。

コンパイル済みのソフトウェアの管理だけでなく、ソースコードコンパイルして
使用するソフトウェアの依存関係も解決してくれる。

aptコマンドですが、実はいろいろ歴史があって、apt / apt-get / aptitude
この3つだけでなく似たようなコマンドがあるようです。
パッケージ管理システムを実行するコマンドであることには違いないのですが
どうも微妙に動作が違うようです。
apt-get でアップデートすると旧バージョンの構成を残したままアップデートするようで
最新の構成になってくれないとか。ようは余計なゴミが残ったりする。
Debian公式サイトではaptでの実行が推奨されているようです
 

■検索・情報表示

パッケージ(ソフトウェア)検索
$ apt search 検索キーワード※正規表現ききます

完全一致検索の例
$ apt search ^vim$
特定パッケージの情報表示
$ apt show パッケージ名

※ここから下のコマンドはroot権限が必要です。

■追加、ダウンロード

パッケージ(ソフトウェア)のインストール
# apt install パッケージ名
ソースパッケージのダウンロード
# apt source パッケージ名
ソースパッケージをコンパイルする為に必要なパッケージのダウンロード
# apt build-dep パッケージ名

■更新

リポジトリの更新
# apt update
インストール済みソフトウェアの更新
# apt upgrade
ディストリビューションのアップグレード(依存パッケージが削除されることもある)
# apt dist-upgrade

■削除

特定パッケージの削除
# apt remove パッケージ名
特定パッケージの設定ファイルを含めた削除
# apt purge パッケージ名
不要なパッケージの自動削除(依存されていないライブラリ)
# apt autoremove パッケージ名