読者です 読者をやめる 読者になる 読者になる

悪あがきプログラマー

悪あがきを続けていきたい技術と書評なブログです。トレタでiOSエンジニアやってます。

そろそろRailsについてまとめておくか

rails

プロジェクトが一区切りついたのでまとめておく。
個人的に初めてのRails開発だったので最初は色々と戸惑うことが多かったです。
このまとめは、その都度調べたものをEvernoteに突っ込んでいてそれを並べた感じです。
まぁ自分用メモです。


環境はこんな感じ

                            • -

ruby 1.8.7
rails 2.3.8
MySQL 5.1
開発機 windowsXP
本番機 CentOS

                          • -

アプリの概要としてはアンケートシステムが近いですね。
CSVダウンロード、PDFダウンロード、グラフがある。
(グラフは自分実装してないのでcairoを使ってるくらいしかわからない。わからないってダメですね。)


モノはそんなに大きくなくて、2人で3ヶ月くらいのもの。

開発環境

Aptanaでインデントを揃える

Aptana IDE のRuby Editor における表示設定|AAC通信
この設定で大分見やすくなりました。
まぁ、考えればわかることなんですけどね。

対話型コンソール

対話型コンソールの使い方 - elm200 のノマドで行こう!
irbrails版みたいなもの?
modelの確認とかに便利

ActiveRecord

join


Rails(ActiveRecord)のJOINのイディオム

ありえるえりあ

結局は今回のPJではモデルに関連を定義していなかったので、使いませんでした。
なんで関連定義してないんだろ?

Migration

MySqlの型を再現

Rails の Migration で MySQL の型を指定する | METAREAL
もともとMigrationを使ってなくて、ベタDDLで管理されてたのを途中からMigration管理に移行しました。
なもんで、元のMySql型を再現する必要がありました。

Migrate先の環境指定方法
$ rake db:migrate RAILS_ENV="production"
テーブル作成時は予約後に注意しよう

Rails初心者Tips - satake7’s memo
一回カラムに"class"って名前付けちゃってやってしまいました。

開発

次回から自動でログイン

3 日坊主日記 - 次回から自動でログインする
参考にさせていただいてうまく動いているのですが、
未だにちゃんと理解できてません(汗

イメージサブミットボタンを使う方法


画像の座標値で判定すればOK

redirect_toでエラー

wysawyg
and trueなんてあったんですね。

renderとredirect_to

[Rails] renderとredirect_toの違い - 拝啓、シーシュポス
未だに悩むことがあるけど、基本はredner、登録系などF5更新されて問題ある場合はredirect_toとしている。

単体テスト

任意ファイルのFixture読み込み

Error 404 (Not Found)!!1
全テストで同じFixture共有はキビシイでしょ。
ということで、これができて助かりました。

MySQL

Round()関数

Round() 関数は四捨五入関数ではない: ITコンサルタント 市井賢児のメモ
いやぁ、なんかおかしいと思ったんすよ。四捨五入じゃなかったとはびっくり。

文字化け

SREngine: Sein blog: 【MySQL】 文字化け解決法 (UTF-8)
これは危なかったです。本番機だけ文字コードが違ってて。
これ、大事です。
skip-character-set-client-handshake

リモート接続が遅い

MySQLでリモートへの接続が遅い | QUALL - blog
これも助かりました。
毎回20秒くらいかかっていたので。

その他

クラスインスタンス変数のお話

Design Recipe 別館 Blog - Ruby::クラスインスタンス変数の活躍
一回理解したけど、またすぐに忘れそうなので。

デプロイ

『Railsデプロイ』は良い本

Railsデプロイ
Railsデプロイ
posted with amazlet at 10.12.19
Ezra Zygmuntowicz Bruce A. Tate Clinton Begin
オライリージャパン
売り上げランキング: 287497

今までデプロイ関連の本なんて読んだことなかった(そもそもあるのか?)
からRailsに限らず勉強になった。
capistranoの存在も知れたし。
現PJで使ってないことも知れたしorz

プロジェクトの進め方について

masuidrive的プロジェクトの方針 - @masuidrive blog
あまり関係ないけど、なんかこんな風にできたらいいなぁと。

IPARails資料

情報処理推進機構:オープンソフトウェア:OSS人材育成:OSSモデルカリキュラム導入実証
あまり知られてなさそうですけどかなりの資料がそろってます。
これからRailsやるって人はとりあえずここだけで勉強できると思います!

反省点&次回以降整備したいこと

  • レビュー体制
    • 今回はレビュー体制を組めなかった
  • 単体テスト
    • なかなか完璧にやるのは難しいですね
  • リファクタリング
    • 上が完璧じゃないのでなんとも
  • 名前付け
    • レビューに組み込んで適当な名前を付けないようにしたい
  • デプロイ
  • DB変更
    • 余計な作業が多い
    • 少人数で作るなら固まるまで定義書はいらない
    • schema.rb見れば事足りるはず
  • ドキュメンテーション
    • Rdoc書こう
  • Redmine
    • 途中から機能しなくなった
  • 設計書類
    • 文字切れが多すぎ
    • フォーマット見直し
    • 表のみのドキュメントに関してはセル結合止める