- 2010-01-23 (土) 15:12
- Programming
わーい♪ Rails で Wiki もどきができたよ!
そろそろ本で読んだ感想なんかをまとめる Wiki がほしくなったのだけど、そのためには Wiki を作る必要があるんじゃねーか? と思い立ったので。確か昔も一度挑戦したのだけど、そのころのコードを見てもちんぷんかんぷんだったのでもう一回作り直した。ここまでで、所要時間3時間…
とりあえず、拡張型Markdownと[[]]ブラケットでWikiネームを使えるようにしました[1] 。普通のWikiと違うところは作成編集削除にログインが必要で代わりに凍結機能がないこと、Sqlite 3データベースに保存されること。ファイルがわらわらできると、いろいろめんどくさくね?
まだバージョン管理とタグ機能、ファイル添付機能を入れていないのでまだまだだけど。コメントとトラックバックはDisqusを使う予定なので、ファイル添付機能もあえてつけずに外部サーバーと連携するようにするかなぁ…とか考え中。編集画面のサイドバーで添付ファイルを選択すれば、編集画面へタグが挿入されるとか、そういうのを画策。
今日の忘れていたことメモ—マイグレーションファイルの書き方。
1. Scaffold でいろいろいっぺんに作る
> ruby script\generate scaffold Page title:string content:text
※20100122151948_create_pages.rb
class CreatePages < ActiveRecord::Migration
def self.up
create_table :pages do |t|
t.string :title
t.text :content
t.timestamps
end
end
def self.down
drop_table :pages
end
end
2. Scaffold で作ったテーブルに初期値を与えたい
class CreateSettings < ActiveRecord::Migration
def self.up
create_table :settings do |t|
t.string :site_name
t.string :theme
t.timestamps
end
Setting.create(:site_name => 'a tiny wiki', :theme => 'default')
end
def self.down
drop_table :settings
end
end
3. んあ、カラムひとつ追加するの忘れてた!
> ruby script\generate Magration AddSiteDescriptionToSetting
※20100122164628_add_site_description_to_setting.rb
class AddSiteDescriptionToSetting < ActiveRecord::Migration
def self.up
add_column :settings, :site_description, :string
Setting.update(1, :site_description => 'this is a very tiny wiki.')
end
def self.down
remove_column :settings, :site_description
end
end
update(1, …) でええんかなぁー。こういうの、ほんとは決め打ちよくないけどね。
4. 最後に
> rake db:migrate
—
せっかくサイト名とかを設定できる設定画面を作ったのだけど、特殊な名前のWikiページに書いて設定するようにしたので、最後には結局不要になってしまった…。えへへw
- Bluefeather: http://ruby.morphball.net/bluefeather/ (*)
- Newer: どっちかにしてくれ。
- Older: 提言: 失業者を0にしよう

