Hatena::Groupkdri

KazusaAPI開発日誌 このページをアンテナに追加 RSSフィード

2007-03-07

生物種名や染色体分子名の管理用のデータベースを作成する:genomes (1)

|  生物種名や染色体分子名の管理用のデータベースを作成する:genomes (1) - KazusaAPI開発日誌 を含むブックマーク はてなブックマーク -  生物種名や染色体分子名の管理用のデータベースを作成する:genomes (1) - KazusaAPI開発日誌  生物種名や染色体分子名の管理用のデータベースを作成する:genomes (1) - KazusaAPI開発日誌 のブックマークコメント

CyanoBase を再構築するときに、生物種ごとの名前空間が必要になったので、それの入れ物をつくる。名前は genomes にしておく。ついでに RESTful な Rails を試してみる。

RESTful Rails については、b-simple.de - Agiles Projektmanagement, Scrum, Softwareentwicklung, Schulungen の PDF チュートリアルを読み進める。

screenshot

アプリケーションの作成

% rails genomes
% cd genomes
% script/server

config/ligthttpd.conf の server.port = 3000 を server.port = 3015 に変更。

lib/tasks/local.rake を作成、require 'rake/clean' を追加。

genomes_development を作成。

scaffold_resource

Genome モデルと Organism モデルなどのファイルを生成。

% script/generate scaffold_resource genome name:string organism_id:integer
% script/generate scaffold_resource organism name:string ncbi_tax_id:string kcode:string
% script/generate migration add_index_organism_id_to_genome
% script/generate migration add_index_kcode_on_organisms
% rake db:migrate

名前空間は organisms がもつ。染色体分子だけでなくプラスミド分子も genomes に入れる。したがって、organism has_many genomes な関係になる。そのようにモデルに関係を追加する。

app/models/genome.rb に belongs_to :organism を追加。

app/models/organism.rb に has_many :genomes を追加。

RESTful

http://localhost:3015/organisms にアクセスするとエントリ数ゼロのページがあらわれる。

New organism のリンクから Editing organism ページへいき、一つエントリを作成する。そして http://localhost:3015/organisms へもどり、エントリが追加されたことを確認する。

http://localhost:3015/organisms.xml にアクセスすると結果が XML で返ってくる。

<?xml version="1.0" encoding="UTF-8"?>
<organisms>
  <organism>
    <id type="integer">1</id>
    <kcode>s6803</kcode>
    <name>Synechocystis sp. PCC 6803</name>
    <ncbi-tax-id>1143</ncbi-tax-id>
  </organism>
</organisms>

フィールド名がそのままタグ名になっている。ただし、_ は - に変換されている。

curl を使うと便利。HTTP-Accept-Field を使う場合。

 % curl -H 'Accept: application/xml" -i -X GET http://localhost:3015/organisms

拡張子を使うアクセスでも同様のxmlが返る。

 % curl -i -X GET http://localhost:3015/organisms.xml

atat2007/03/28 15:44curlでは?

nakao_mitsuterunakao_mitsuteru2007/03/28 17:13訂正しました。ありがとうございます。

トラックバック - http://kdri.g.hatena.ne.jp/nakao_mitsuteru/20070307