Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

無料期間が終わるAWSから古いVPSにRailsプロジェクトを退避する作業をしていた。

$  RAILS_ENV=production rake db:create
Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
#<Mysql2::Error: Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)>
Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8mb4", "collation"=>"utf8mb4_general_ci", "pool"=>5, "userna
me"=>"user", "password"=>"pass", "socket"=>"/var/lib/mysql/mysql.sock", "database"=>"example_production", "host"=>ni
l}, {:charset=>"utf8mb4", :collation=>"utf8mb4_general_ci"}

utf8mb4が使えない…。
MySQLを5.1から5.5にあげて、mysql2 gemを入れなおしたら行けた。

$ sudo yum upgrade mysql --enablerepo=remi
$ bundle exec gem uninstall mysql2
$ bundle

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/
無事動いた。