image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2007年10月19日 | トップページ | 2007年10月22日 »

2007年10月21日

2007-10-21

magic_multi_connections を試してみた

ruby の ActiveRecord の使い方をしらべていて、magic_multi_connections というものが
あることを知った。

- http://d.hatena.ne.jp/Rommy/20070514/1179164848
> > 分散DB対応ライブラリ Magic Multi-Connections を試してみる - 半隠遁日記

ここにあったソースコードをベースに、自分も試してみた。

3つの ruby ファイルをつくった。以下にそれを示そう。
  1. multi_common.rb  // 下の2つで共通に使う部分
  2. multi_create.rb  // テーブルの新規作成と、初期データ設定
  3. multi_crud.rb    // テーブル中データの Create/Read/Updae/Delete

1. multi_common.rb

$ cat multi_common.rb
# See
#  http://d.hatena.ne.jp/Rommy/20070514/1179164848

require "rubygems"
require "fileutils"
require "active_record"
require "magic_multi_connections"

ActiveRecord::Base.configurations = {
  "db1" => {:adapter => "sqlite3", :dbfile => "db01.db"},
  'db2' => {:adapter => "sqlite3", :dbfile => "db02.db"},
}
ActiveRecord::Schema.verbose = false

module Main
  establish_connection :db1
end

module Sub
  establish_connection :db2
end

class User < ActiveRecord::Base
end

2. multi_create.rb

$ cat multi_create.rb
require "multi_common"

include Main
include Sub

# ActiveRecord::Base.logger = Logger.new(STDERR)
# ActiveRecord::Base.colorize_logging = false

# Data 初期化
ActiveRecord::Base.configurations.each{|key, configuration|
  FileUtils.rm_f(configuration[:dbfile])
  ActiveRecord::Base.establish_connection(key)
  ActiveRecord::Schema.define {
    create_table("users"){|t|
      t.column "name", :string
    }
  }
}

# db1 で作成
Main::User.create!(:name => "a")
Main::User.create!(:name => "b")

# db2 で作成
Sub::User.create!(:name => "c")
Sub::User.create!(:name => "d")

# データの確認
p Main::User.find(:all).map{|c| c.attributes} #=> [{"name"=>"a", "id"=>1}, {"name"=>"b", "id"=>2}]
p Sub::User.find(:all).map{|c| c.attributes}  #=> [{"name"=>"c", "id"=>1}, {"name"=>"d", "id"=>2}]

3. multi_crud.rb

$ cat multi_crud.rb
require "multi_common"

# ActiveRecord::Base.logger = Logger.new(STDERR)
# ActiveRecord::Base.colorize_logging = false

# データの確認
p Main::User.find(:all).map{|c| c.attributes} #=> [{"name"=>"a", "id"=>1}, {"name"=>"b", "id"=>2}]
p Sub::User.find(:all).map{|c| c.attributes}  #=> [{"name"=>"c", "id"=>1}, {"name"=>"d", "id"=>2}]

# データ追加
Main::User.create!(:name => "x")
Sub::User.create!(:name => "y")
# データの確認
p Main::User.find(:all).map{|c| c.attributes} #=> [{"name"=>"a", "id"=>1}, {"name"=>"b", "id"=>2}, {"name"=>"x", "id"=>3}]
p Sub::User.find(:all).map{|c| c.attributes}  #=> [{"name"=>"c", "id"=>1}, {"name"=>"d", "id"=>2}, {"name"=>"y", "id"=>3}]

# データ削除
Main::User.delete_all(:name=>"b")
Sub::User.delete_all(:name=>"d")
# データの確認
p Main::User.find(:all).map{|c| c.attributes} #=> [{"name"=>"a", "id"=>1}, {"name"=>"x", "id"=>3}]
p Sub::User.find(:all).map{|c| c.attributes}  #=> [{"name"=>"c", "id"=>1}, {"name"=>"y", "id"=>3}]

# データ変更
Main::User.update_all("name='X0'", "name='x'")
Sub::User.update_all("name='Y0'", "name='y'")
# データの確認
p Main::User.find(:all).map{|c| c.attributes} #=> [{"name"=>"a", "id"=>1}, {"name"=>"X0", "id"=>3}]
p Sub::User.find(:all).map{|c| c.attributes}  #=> [{"name"=>"c", "id"=>1}, {"name"=>"Y0", "id"=>3}]

xfy/xvcd から ruby のActiveRecord (magic_multi_connestions なども含む) を利用して DB 利用するのは有用と思う。
どんなプラグインで具体的に利用できるかを考えてみたい。

ピックアップ:XLinkの死, 持ち運べるMac OSXを作成, etc...

- http://ch05250.kitaguni.tv/e132904.html
> > 村田 真のチャンネル:XLinkの死

XML で配列を表現するのに XLink を使っている例をみたことがある。
こんな使い方は本当にセンスが無いと思う。

- http://www.j-cast.com/2007/10/20012404.html
> > J-CASTニュース : 入社半年で「辞めたい」が40% 「仕事通じて成長できない」が理由

> ...
「会社側は改めて人材育成能力のあるマネージャーを置き、新入社員はそのマネージャーの経験に学べるようにする必要があります。一方、新入社員は与えられた仕事が気に入らなくても、そこに仕事の意味や価値を見出すような努力をしてほしい」
> ...

教育、技術の伝達は、組織の問題なのか、個人の問題なのか?
"朱に交われば赤くなる" というように、環境が占める割合は大きい。
しかし環境そののを変えていくという各個人の意思が、環境を変えていく原動力でもあるのだ。

- http://itoshi.tv/d/?date=20060506#p01
> >  ■ [Ruby][Mac]Ruby on Rails + Gruffを使って、11分で作る遺伝子発現データベース
- Hacking is believing@itoshi.tv (2006-05-06)

- http://lucene.jugem.jp/?eid=150
> > 関口宏司のLuceneブログ | RailsアプリからSolrを使う全文検索のデモ

- http://neuroning.com/articles/2006/11/19/on-api-design-guidelines
> > On API Design Guidelines

- http://www.moongift.jp/2007/10/o3spaces/
> > MOONGIFT: » Javaベースのドキュメント管理「O3Spaces」:オープンソースを毎日紹介

- http://www.moongift.jp/2007/10/portableosx/
> > MOONGIFT: » 持ち運べるMac OSXを作成「PortableOSX」:オープンソースを毎日紹介

- http://www.ibm.com/developerworks/jp/java/library/j-cq09187/index.html
> > コード品質を追求する: ビヘイビア駆動開発を舞台にした冒険

- http://harvardmedblog.blog90.fc2.com/blog-entry-144.html

> > ハーバード大学医学部留学・独立日記 ... うまく質問するために覚えておくとよい10のポイント

- http://beyond.2log.net/akutoku/topics/2007/1020.html
> > グーグル八分発見システムで、何が分かるのか? - 悪の最新情報

« 2007年10月19日 | トップページ | 2007年10月22日 »

mokuji

2013年12月
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
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク