Time to Read
1分
意外と簡単でした。
URI::Generic を継承したクラスを作る:
1 2 | require 'uri' class URI::MySQL < URI::Generic; end |
URI.scheme_list に登録する:
1 | URI.scheme_list["MYSQL"] = URI::MySQL |
あとは、
1 2 3 4 5 | uri = URI.parse("mysql://u-kondo:XXXXX@localhost:3306/hogege") uri.class #=> URI::MySQL uri.host #=> localhost |
簡単ですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | require 'uri' require 'active_record' class URI::MySQL < URI::Generic def default_port 3306 end def database path[1..-1] rescue nil end def connection_hash { :adapter => scheme, :host => host, :username => user, :password => password, :database => database, :encoding => 'utf8', :port => port } end end URI.scheme_list["MYSQL"] = URI::MySQL uri = URI.parse("mysql://u-kondo:XXXXX@localhost/hogege") ActiveRecord::Base.establish_connection(uri.connection_hash) |
サクッとこういうコードが書けるとかっこいいですね。
see also
ドキュメント。
rubygems で提供されている Addressable は、RFC 3986 準拠の URI を表現するライブラリです




