Cedar-14への移行方法

2015/11/4をもってHerokuのCedar-10 stackが終了したので、Cedar-14に移行しましょう。
現段階でCedar-10を利用している人は、push時に移行して下さいというメッセージが出てdeploy出来ない状態となっています。

1. 以下のコマンドで簡単にCedar-14 stackを利用すようにします。

$ heroku stack:migrate cedar-14 -a <app name>

2. Herokuにpushします

これでCedar-14でdeployされるようになります。簡単です。Heroku素晴らしい:D

参考リンク

devcenter.heroku.com

Herokuでdeploy時のdowntimeをゼロにする

preboot機能を有効にします。

heroku features:enable preboot

無効にするにはdisable

heroku features:disable preboot

注意事項として、Documentに

If you make database schema changes that require downtime, we recommend disabling the preboot feature, performing the changes and code push as usual, then re-enabling preboot.

と書かれていますが、database schemaに変更を加える場合はpreboot機能をdisableにすることが推奨されています。

Gitで2つのコミット間の変更を確認する方法

commitのハッシュ値を用いれば、diffでコミット間の変更を確認できます。

git diff --name-only SHA1...SHA2

また、ブランチ名を利用することも出来ます。

git diff --name-only master...branch

ただし、スクリプト内で用いる場合はハッシュ値を用いた方法でなければ、上手くいかないです。
これはgitのbranch情報が取得出来てないからだと思いますが、何故かは分かりません。その辺の仕組みが曖昧だなと認識出来ました。

SwiftでSingletonを作成する

以下の様に作成する。
Singleton.sharedInstance
と利用すれば良い。

class Singleton {
  class var sharedInstance: Singleton {
    struct Static {
      static var instance: Singleton?
      static var token: dispatch_once_t = 0
    }

    dispatch_once(&Static.token) {
      Static.instance = Singleton()
    }

    return Static.instance!
  }
}

参考リンク

Martin on Code

Flurryの導入

Podで導入

pod 'FlurrySDK', '5.4'

AntonPalich/Flurry · GitHub

最新版の6.0.0は上記Podには含まれていなかったのでPRを送信しておきました。

また、私のリポジトリで6.0.0のものを上げてるのでPrivate Spec Repoで利用する方法も可能です。
nafu/Flurry · GitHub

CocoaPodsに変わるライブラリ管理ツール?Carthageを使ってみた

Carthage/Carthage · GitHub

使い方は簡単
1. インストール
2. Cartfile作成
3. carthage update実行
4. 各々お好きに

1. インストール
Releases · Carthage/Carthage · GitHub
githubからpkgをダウンロードして実行するだけ!

2. Cartfile作成

Quickをインストールしたい場合はこれだけ!

github "Quick/Quick" == 0.2.0
github "Quick/Nimble"

3. carthage update実行
あとは、carthageがgit cloneやらxcodebuildを実行してくれて、.frameworkファイルを生成してくれます。

4. 各々お好きに

Quickを実行する場合は、xcodeprojをテストターゲットに追加して、Carthage/Buildの.frameworkをリンクさせれば良いです。

Swiftのクラスをテストから参照する

Tests.swift内で、プロジェクトのクラスを参照する方法。

自分の作成したプロジェクトがMyProjectとします。
Tests.swift内で`import MyProject`として、importします。
ここで、注意なのはMyProjectで作成したclassはMyProject内からしか参照出来ない状態です。
publicを指定していれば、参照出来るようになります。

import Foundation

public class Model {
  public init() {
  }
}

これで、以下のようにテスト内で参照できます。
Tests.swift

import XCTest
import MyProject

class ModelTests: XCTestCase {
  let testObject = Model()
}