Dropbox-iOS-SDKの1.3.14をCocoaPodsで入れる

https://github.com/CocoaPods/Specs/tree/master/Specs/Dropbox-iOS-SDK
本家にはなぜか1.3.13までしかなく、bitcodeを有効化したbuildができなかった。

https://gist.github.com/tnantoka/a18e101e6fd458ed34354d53d6ae9b2a
こういう野良podspecを作って、

pod 'Dropbox-iOS-SDK', podspec: 'https://gist.githubusercontent.com/tnantoka/a18e101e6fd458ed34354d53d6ae9b2a/raw/b761aa4e39f840ce51f6f5f1b4879e61459398f3/Dropbox-iOS-SDK.podspec.json' 

でひとまず逃げた。

This installation of RMagick was configured with ImageMagick x.x.x but ImageMagick x.y.z-a is in use.

$ ./bin/rails c
This installation of RMagick was configured with ImageMagick x.x.x but ImageMagick x.y.z-a is in use. (RuntimeError)
$ bundle uninstall rmagick
$ bundle

で直った。急になったのでびっくりした…。

content_forのflash引数を知らなかった

partialの中に、

- content_for(:foo) do
  ul
    li= 'bar'

= yeild(:foo)

みたいな記述があったんだけど、renderするたびにbarがlistが増殖していって???ってなった。

- content_for(:foo, flash: true) do

すれば解消した。

参考

Rails の content_for の初期化 [俺の備忘録]

Hello, Hakyll with GitHub Pages

関数型言語に少しでも慣れるため、これからGitHub Pagesで何か作る時は、Hakyll を使うのを自分に強制しようかな、と思っています。(思いましたが、その後、結局Jekyll使ってます。)

というわけでまずはhello worldから。

ローカルで動かす

インストール

https://www.haskell.org/platform/mac.html を入れる。
以降は、https://jaspervdj.be/hakyll/tutorials/01-installation.html を参考に。

$ ghc -V
The Glorious Glasgow Haskell Compilation System, version 7.10.3

$ cabal install hakyll

パスを通しておかないとhakyll-initなどが使えないので注意 ( http://qiita.com/JunKikuchi/items/8b82b6811687560d903d )

# ~/.bash_profile
export PATH="$HOME/Library/Haskell/bin:$PATH"
# source ~/.bash_profile

サイトの作成

$ hakyll-init hello-hakyll-with-gh-pages
$ cd hello-hakyll-with-gh-pages
$ ghc --make -threaded site.hs
$ ./site build

これで_site以下にサイトが構築される

$ ./site watch

すれば、http://localhost:8000/で見れるようになる。

Circle Ciを使ってdeploy(断念)

hslua-0.4.1のインストールがこけて断念したけど、一応メモを残しておく。
プロジェクトrepo(gh-pages)でやる前提。

http://www.stackbuilders.com/news/dr-hakyll-create-a-github-page-with-hakyll-and-circleci を参考にした。

Travis CIの場合は、https://imokuri123.com/blog/2015/04/create-github-pages-with-hakyll.html が日本語で参考になりそうだった。

masterブランチの作成(ソース管理用)

$ git init
$ git commit --allow-empty -m "Create master branch"
$ git remote add origin git@github.com:tnantoka/hello-hakyll-with-gh-pages.git
$ git push -u origin master

※ --orphanというのは他のブランチの歴史を引き継がないブランチ。http://d.hatena.ne.jp/eldesh/20120715/1342343316

gh-pagesブランチの作成(サイト公開用)

$ git checkout --orphan gh-pages
$ git commit --allow-empty -m "Create gh-pages branch"
$ git push origin gh-pages

gh-pagesを_siteとしてsubmoduleに追加

$ rm -rf _site
$ git checkout master
$ git submodule add -b gh-pages git@github.com:tnantoka/hello-hakyll-with-gh-pages.git _site
$ git commit -m "Add submodule at _site"
$ git push origin master

$ wget https://raw.githubusercontent.com/github/gitignore/master/Haskell.gitignore -O .gitignore
$ echo "_cache/" >> .gitignore 
$ echo "/site" >> .gitignore 

$ git add .
$ git push origin master

Circle CIでbuild

Circle CIで使えるHaskellの環境は、https://circleci.com/docs/environment#haskell に載ってる。

$ vim circle.yml
$ git add circle.yml
$ git commit -m "Configure CircleCI"
$ git push origin master

最終的に、
https://github.com/tnantoka/hello-hakyll-with-gh-pages/blob/master/circle.yml の内容でbuildしたが、先述の通り、hslua-0.4.1がインストールできなかったので、一旦断念。

ログはこちら。
https://circleci.com/gh/tnantoka/hello-hakyll-with-gh-pages/3

ローカルからdeploy

できればCIサーバからやりたかったけど、別にローカルからでも運用はできるので、https://github.com/tnantoka/hello-hakyll-with-gh-pages/blob/master/deploy.sh でdeployすることにした。

$ ./deply.sh

http://tnantoka.github.io/hello-hakyll-with-gh-pages/
無事動いた。

utf8mb4化したらtextカラムがmediumtextに変わっててびっくりした

カラムを追加する作業があった。
rails g migrationしてrake db:migrateしたら終わりー、と思ったら、

Annotated (8): ...

8!?今モデル1つ変えただけなんだけど…

$ git diff
--- a/db/schema.rb
+++ b/db/schema.rb

-    t.text     "title",         limit: 65535
-    t.text     "url",           limit: 65535
+    t.text     "title",         limit: 16777215
+    t.text     "url",           limit: 16777215

こんな感じで、limit指定してないtextカラムが軒並み変わってる。

$ rails db   
mysql> SHOW COLUMNS FROM tasks;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| title         | mediumtext   | YES  |     | NULL    |                |
| url           | mediumtext   | YES  |     | NULL    |                |

データベース上もそうなってる。

ちょっと調べたら、

http://beanidealisticrealist.hatenablog.com/entry/2013/05/14/MySQL%E3%81%A7%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%A8%E3%82%AB%E3%83%A9%E3%83%A0%E3%81%AE%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E4%B8%80%E6%8B%AC%E5%A4%89%E6%9B%B4

ということらしい。

意図しない型の変換に注意!

CONVERT TO CHARACTER SET を用いた場合、型が自動的に変換されてしまうことがあります。
たとえば、utf-8 から utf8mb4 に変更する場合は、text 型のカラムは自動的に mediamtext に変換されます。

確かに、少し前にutf8mb4に変えました。そしてそれはmigrationでやらなかったのでannotateも実行されておらず、今になって気づいたわけです…。