Rails / Active RecordでMySQLのgeometry型をサポートするライブラリを書いた
ActiveRecordでもgeometry型がサポートされる世界がやってきました。
実は他にもRgeoを利用したgeometry型をサポートするadapterは存在しているのですが (これ とか)、個人的にはRidgepoleの作者が作ってくれていることに価値があります。
なぜなら私はRailsユーザではなくRidgepoleユーザだから。
もしかしたらRidgepoleでもgeometry型が標準サポートされる世界がやってくるかもしれません。
(ちなみに個人的感想ですが、「Railsで使う」というユースケース的には、ActiveRecordがgeometry型をサポートしないかぎりRidgepoleは標準サポートしなさそうという感じです)
Ridgepoleとarmgを使ってスキーマをexportしてみる
これはwinebarrelさんのエントリにもあるように -r
オプションに armg
を渡してやるだけでOKです
ridgepole -c database.yml -r armg --export -o Schemafile
Ridgepoleとarmgを使ってスキーマをapplyしてみる
こちらは -r armg
だけでは足りません。
( Ridgepole::DSLParser::TableDefinition::TYPES
に :geometry
が必要 )
なので、まず、以下のようなファイル geometry.rb
を用意します。
class Ridgepole::DSLParser
class TableDefinition
TYPES.push(:geometry) # この行はなくても良いけどなんとなく
def geometry(*args)
options = args.extract_options!
column_names = args
column_names.each {|name| column(name, :geometry, options) }
end
end
end
そして geometry.rb
も -r
オプションに渡してあげれば apply が可能になります。
ridgepole -c database.yml -r armg,/full/path/to/geometry --apply -f Schemafile
これで geometry型があるスキーマをRidgepoleで管理できます!便利!