Railsでspec実行時に毎回DBが再構築されないようにする

Railsでテストを流すときに毎回データベースの再構築が行われる。 これにより、テスト実行時間が少し長くなるので、この機能を無効にしたかった。

どうやらこの辺ぽい

config.active_record.maintain_test_schema: テスト実行時にActive Recordがテスト用データベーススキーマをdb/schema.rb(またはdb/structure.sql)に基づいて最新の状態にするかどうかを指定します。デフォルト値はtrueです。

config/environments/test.rb に次の一行を追加することで毎回データベースが再構築されなくなった。

  config.active_record.maintain_test_schema = false

MySQLでCREATE or DROPできる権限レベル

データベースのCREATEを行える権限の付与について調べていたとき、 どのようなレベルの権限を付与すると可能なのか明示的に書かれている ものを見つけられなかったので書いてみる。 (以下、CREATEについて書いているがDROPも同様)

あるデータベースAをcreateするためには 次のどちらかの権限がついている必要がある

  • *.*: グローバル権限
    • どのデータベースでも作ることができる
    • GRANT文: GRANT CREATE ON *.* TO user_name
  • A.*: データベース権限
    • Aというデータベースのみ作ることができる
    • GRANT文: GRANT CREATE ON A.* TO user_name

逆に次の権限レベルでは作成することができない

  • A.table1: テーブル権限
    • Aというデータベースを作ることはできないが、table1というテーブルを作ることはできる
    • GRANT文: GRANT CREATE ON A.table1 TO user_name

まとめ

グローバル権限もしくは、対象のデータベース名が含んだデータベース権限が必要

参考情報

LAN内のIPを探す

家の中で起動させている、raspberry-piに久しぶりにsshで入りたいけど どのIPだったか忘れてしまったときに調べる手順について書いておく

arp-scanをインストールする

$ brew install arp-scan

使ってみると、IP, MACアドレス、Device製造元?のような情報が表示される

$ sudo arp-scan -l --interface en0
192.168.10.1    00:xx:00:xx:00:xx       NEC Platforms, Ltd.
192.168.10.15   00:xx:00:xx:00:xx      SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
192.168.10.115   00:xx:00:xx:00:xx    PLANEX COMMUNICATIONS INC.

別のやり方(追記)

ブロードキャストにpingを投げてからarpエントリーを確認するという手もあるっぽい

$ ping 192.168.10.255
$ arp -a

感想

ひさびさにsshでLAN内のサーバーなどへ接続するとき、接続先のIPがわからないことがあり DHCPの範囲を順番に1つずつ試すみたいなことをやってたけど、今回のこの方法で目指すIPを簡単に発見できるようになった。