サーバーアプリケーションをRails4を使って構築していきます。
mysql
用途から言ってsqlliteで十分だと思うけれど、データベースは使い慣れているmysqlにする。
$ sudo apt-get install mysql-server
$ sudo apt-get install libmysqlclient-dev ← gem mysqlで使うから
後これくらいはやっておこう。
$ mysql_secure_installation
ユーザ作成
mysqlにrecmanユーザを作成して、recmanデータベースのアクセス権を与える。
$ mysql -uroot -p
> create user 'recman'@'localhost' identified by 'pw';
> grant all privileges on recman.* to 'recman'@'localhost';
railsアプリ(recman)の作成
$ rails new recman -d mysql
gitリポジトリ
$ cd recman
$ git init
$ git add .
$ git commit -m "the first recman"
gem
recman/conf/database.ymlのproductionセクションが以下のようになっていたので
production:
<<: br="" default=""> database: recman_production
username: recman
password: <%= ENV['RECMAN_DATABASE_PASSWORD'] %>
↑直接パスワードに書き換える。環境変数で管理するほどじゃないし。
その他データベース名とかは自分のすきに書き換える。
Gemfileに追記
gem 'therubyracer'
gem 'mysql'
gem 'unicorn' ←productionをunicornで駆動するから
今回デプロイしないで直接駆動の予定なので、capistranoは使わないな。
$ bundle install
これでrailsアプリの母体が出来ました。
model作成
Channelモデル
$ rails g model channel code:integer name:string
Categoryモデル
$ rails g model category name:string
Programモデル
$ rails g scaffold program \
channel_id:integer \
title:string \
detail:text \
start_time:datetime \
end_time:datetime \
duration:integer \
category_id:integer \
event_id:integer
scaffoldで作ると、VMC全部作ってくれます。楽ちん。
event_idはどう使うかイメージできていないけど、放送終了まではユニークなコードらしいので録画スケジュールとかで使えるかと。
後で、ChannelとProgramのchannel_idが関係付けられる感じ。Categoryも同じ。
index作成
モデル作成時に出来たmigrationファイルに書き加えてもいいけど、区別した方が自分は好きなので。
$ rails g migration AddIndexToPrograms
db/migration/[TIME]_add_index_to_programs.rbにadd_indexを書いていく
def change
add_index :programs, :channel_id
add_index :programs, :title
add_index :programs, :category_id
add_index :programs, :start_at
add_index :programs, :end_at
add_index :programs, :event_id
add_index :programs, [:start_at,:end_at]
add_index :programs, [:start_at,:duration]
add_index :programs, [:category_id,:start_at]
end
な感じ? ありそうなクエリをひと通りインデクス作っておこう。マスターレコードのChannelやCategoryも一応ね。
データベース作成
$ bundle exec rake db:create
$ bundle exec rake db:migrate
viewを確認(データ入ってないけど)
$ rails s -b 0.0.0.0
ブラウザで http://shuttle:3000/programs へ
とりあえず出ましたね。Listing Programs
Channel_id Title Detail Start_at End_at Duration Category_id
New Program
おお。パスをわざと間違えてみたら、RoutingErrorページが格好いいじゃないですか。
多分これDevelopmentで動かしている時に出るんでしょうね。Rails3はこんなじゃなかったなぁ。
ちょっと感動。
データベースの中身が入ってこないとつまらないんで、次はそっちから片付けます。
0 件のコメント:
コメントを投稿