LoginSignup
1
2

More than 5 years have passed since last update.

armgを利用してRidgepoleでgeometry型が存在するスキーマのexportとapplyを実現する

Last updated at Posted at 2017-08-16

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で管理できます!便利!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2