タイポがあったのにAirbrakeで通知されなかった

typoを含んだコードが動いてるとかテストどうなってんの?という話は置いておくとして。

準備

config/initializers/airbrake.rb
# コメントアウト
# c.ignore_environments = %w(development test)

通知されるパターン

class Foo
  def self.test
    raise 'bar'
    puts 'hello'
  end
$ ./bin/rails r "Foo.test"
/path/to/app/models/foo.rb:3:in `test': bar (RuntimeError)

通知されないパターン

class Foo
  def self.test
    bar
    puts 'hello'
  end
$ ./bin/rails r "Foo.test"
Please specify a valid ruby command or the path of a script to run.
Run 'bin/rails runner -h' for help.

どうやら、typo(NameError)の時はrunner側で何かしらされてるっぽい。

https://github.com/rails/rails/blob/master/railties/lib/rails/commands/runner/runner_command.rb#L34

rescue SyntaxError, NameError => error

resuceされてた。疑問解決。

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 の初期化 [俺の備忘録]