2012-05-25 RC
Rails2.3.14+MySQL5.1でテーブル&カラムコメントをMigrationで追加する
以前書いたエントリ でPostgresqlでのコメントを追加したが、Rails2.3.14案件でテーブル&カラムコメントをつける必要が出たのでメモ。
パッチ
これをconfig/initializers/column_comment.rbにでも入れておけば、Migration時にコメントを付加してくれる。
注意点
Rails2.3.14のMigration部分を思い切りコピペして改造しているため、意図しない動きになるかもしれない。
# NOTICE : Rails2.3.14のActiveRecordを前提としている。 module ActiveRecord module ConnectionAdapters class MysqlAdapter def create_table(table_name, options = {}) table_definition = TableDefinition.new(self) table_definition.primary_key(options[:primary_key] || Base.get_primary_key(table_name.to_s.singularize)) unless options[:id] == false yield table_definition if block_given? if options[:force] && table_exists?(table_name) drop_table(table_name, options) end create_sql = "CREATE#{' TEMPORARY' if options[:temporary]} TABLE " create_sql << "#{quote_table_name(table_name)} (" create_sql << table_definition.to_sql create_sql << ") #{options[:options]}" if options[:comment] create_sql << " COMMENT '#{options[:comment]}'" end execute create_sql end def add_column(table_name, column_name, type, options = {}) add_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ADD #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}" add_column_options!(add_column_sql, options) if comment = options[:comment] add_column_sql = "#{add_column_sql} COMMENT '#{comment}'" end add_column_position!(add_column_sql, options) execute(add_column_sql) end def add_column_comment(table_name, column_name, comment = "") current_type = select_one("SHOW COLUMNS FROM #{quote_table_name(table_name)} LIKE '#{column_name}'")["Type"] add_comment_sql = "ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_column_name(column_name)} #{quote_column_name(column_name)} #{current_type} COMMENT '#{comment}'" execute(add_comment_sql) end def add_table_comment(table_name, comment = "") add_comment_sql = "ALTER TABLE #{quote_table_name(table_name)} COMMENT '#{comment}'" execute(add_comment_sql) end end class ColumnDefinition attr_accessor :comment alias :_orig_to_sql :to_sql def to_commented_sql self.comment ? "#{_orig_to_sql} COMMENT '#{self.comment}'" : _orig_to_sql end alias to_sql :to_commented_sql end class TableDefinition alias :_orig_column :column def column(name, type, options = {}) _orig_column(name, type, options) if comment = options[:comment] column = @columns.find { |col| col.name == name } pos = @columns.index(column) @columns[pos].comment = comment end self end end end end
migrationファイルの書き方
●テーブル作成時
create_table :hoge_masters, :comment => "hogehoge" do |t|
t.string :code, :comment => "fugafuga"
end
●カラム追加時
add_column :hoge_masters, :value, :integer, :comment => "コメコメ"
●テーブルコメント追加 ※独自作成機能
add_table_comment :hoge_masters, "テステス"
●カラムコメント追加 ※独自作成機能
add_column_comment :hoge_masters, :effective_value, "コメコメ111"
2012-04-25 snip
2012-03-05
2012-03-02 UV
UbuntuでVNCサーバを立てる方法
sudo apt-get install vnc4server rm .vnc/xstartup # すでに存在している場合のみ実行 ln -s /etc/X11/Xsession ~/.vnc/xstartup # ログイン画面に通常のXを使う vncserver # 起動。初回起動時はVNC接続時のパスワード等を聞かれるので任意で設定。
※↓サービス化する場合は以下参照。
2012-02-16 SK
GnomeShellのシステムトレイからSkypeアイコンが消える件&暫定対策
GnomeShellでSkype起動中のアイコンがいつの間にか消える現象が多発。
どうやらGnomeShellとSkypeの相性がまずく、画面ロックやスクリーンセーバ起動等のタイミングでアイコンが消え去ってしまうらしい。
去年秋にLaunchpadでバグ報告が上がっているが対策はされる気配がない。※参考URL
このせいで「Skypeアイコン無い→Skype起動しよう→バックグラウンドで生きているので[他のSkypeが起動中です]メッセージ→イラッ」というトラップに引っかかりまくるので、以下のように暫定対策を行った。
対策方法
(1)skype起動ファイルを移動
mv /usr/bin/skype /usr/bin/skype.orig
(2)以下スクリプトファイル作成
/usr/bin/skype
#!/bin/bash killall skype.orig > /dev/null sleep 5 skype.orig
これで必ず古いプロセスを落としてから起動するようになるのでイライラも減少。
参考URL
https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/848565
