RailsDbを試してみた。

Railsで使ってるMySqlブラウジングしたかったので話題のRailsDBを使ってみた。
といってもまだ0.2バージョンでデータ構造を見るだけで、レコードの中身をみたり編集することは出来ないんだけど。

まずは入手

http://railsdb.org/

インスト―ル&起動

落としてきたファイルをサーバーに配置して展開して実行。

tar xvf railsdb_0.2.tar
ruby script/server -p3500

んで http://localhost:3500/ を参照すると・・

no such file to load -- sqlite3

おっとSqliteがないとダメみたいだ。そういえばdb:migrateもしてないや(汗
まずはSqliteをインストール

apt-get install sqlite3       #本体をインストールしてから
gem install sqlite3-rails     #ドライバをインストール

としたらgem install sqlite3-railsのところで

/usr/bin/ruby1.8 extconf.rb install sqlite3-ruby
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)

とか言われてついカッとなってruby1.8-devとlibsqlite3-devをインストールしちゃいました。

apt-get install ruby1.8-dev
apt-get install libsqlite3-dev
gem install sqlite3-ruby

せっかくGem便利なんだからこのあたりもやってくれればいいのにとか思う僕は怠惰なんですか?そうですか。。

DBの構築

rale db:migarate しようとしたらおこられる><

ruby: symbol lookup error: /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/lib/sqlite3_api.so: undefined symbol: RSTRING_PTR

RSTRING_PTRって1.8.6で追加されたはず、、、てことは
1.8.6以降じゃないと使えないってことか!!!!!!!!(はせり略)
まあ憤ってもしょうがないんで直す。
/usr/lib/ruby/1.8/i486-linux/ruby.h を編集して以下の2行を追加してあげる。

#define RSTRING_PTR(s) (RSTRING(s)->ptr)
#define RSTRING_LEN(s) (RSTRING(s)->len)

この後にsqlite3-rubyをビルドしなおす。

gem uninstall sqlite3-ruby
gem install sqlite3-ruby
rake db:migrate

これでやっとdb:migrateが成功

画面から動かす

http://localhost:3500/にアクセスしてid:railsdb PASS: changemeでアクセス。
わーい。がめんでたよ〜

さーてじゃあ他のPJのDBを参照してみようか。

新規DBの追加

メニューからDatabaseを選びAddDatabaseでDBを追加。

  • Driver:Mysql,Sqlite,posgresqlから好きなのを選ぶ
  • Name:データベース名
  • Description:適当
  • Path:Sqliteのときだけ指定。Mysqlとポスグレはいらん
  • Host:DBサーバーのホスト(こっから下はMysqlとポスグレのみ)
  • Username:ユーザー名
  • Password:パスワード

追加出来たらDatabaseのところから名前をクリックすると中が見れる。。。はずなんだけどもエラー。。

No such file or directory - /tmp/mysql.sock

確かに〜。デフォルト設定で繋ぎに行っているわけね。今の環境だと「/var/run/mysqld/mysqld.sock」にあるのでそちらに参照を変えてあげなくちゃいけない。
んで設定を探してたんだけど見当たらない。もしやと思いswitch.rbを読んでみたら。

 31       when 'mysql'
 32         ActiveRecord::Base.establish_connection(
 33           :adapter  => 'mysql',
 34           :database => database.name,
 35           :host     => database.host,
 36           :username => database.username,
 37           :password => database.password
 38         )

sock指定してねぇじゃねぇか!!!!!!!!!
しょうがないのでなので直してあげる。

 31       when 'mysql'
 32         ActiveRecord::Base.establish_connection(
 33           :adapter  => 'mysql',
 34           :database => database.name,
 35           :host     => database.host,
 36           :username => database.username,
 37           :password => database.password,
 38           :socket   => '/var/run/mysqld/mysqld.sock'
 39         )

これで自分のPJのDBを参照できた〜。

今後の開発に期待だな。はやいとこデータの閲覧、修正ができるようになって欲しい。