2012年3月23日金曜日

デプロイでつまずいたことまとめ-その1

初めてのデプロイで、初歩的なことからつまずきまくったのでメモ。

1.作業の流れ
  1. Force.com IDEで、全オブジェクトを取得。
    (今回はVisualForcePageのデプロイは無し)
  2. DevelopperForceでテストコードを流し、コードカバー率が足りていることを確認。
  3. 本番環境に初期設定するデータを用意。必要があれば、開発環境からデータローダでエクスポートしておく。
  4. 本番用の組織にログイン。新規アプリケーションの設定。アプリケーションのロゴも登録。
  5. メール送信用に組織で使用するのメールアドレスを登録。
  6. Force.com IDEを使用して、オブジェクトをデプロイ。
  7. 続いて、タブ、レイアウト、ワークフロー、レポート、ダッシュボード等をデプロイしていく。
  8. クラス、コードをデプロイする前に、ここまで正しくデプロイされていることを確認。
  9. アプリケーションに表示タブを登録
  10. プロファイルでデプロイしたアプリケーションの各種設定を行う。
  11. Force.com IDEを使用して、Apexクラス、トリガをデプロイ。
  12. メールサービスの設定
  13. データローダで初期設定データをインサート
2.つまずいたこと
  • データローダの接続先を変更するときに、パスワードにセキュリティートークンを付加しなければならない。これに気がつかずなぜログインが拒否されるのか、しばらく悩むことに。
  • 初期設定データを本番環境にインサートする前にテストコードを実行。入力必須項目が参照項目だったために、テストデータ入力時にエラー。本来は参照対象となるデータもテストコードの初期処理の中で作成しておくべき。
  • オブジェクトに参照先が未定義の検索項目があり、エラーになった。IDEでobjectファイルを開いてみると、確かに該当するタグが残っていた。IDEでタグを削除したところ、正常にデプロイ。DevelopperForceで動いていても、ゴミが残ることがあるようだ。
  • DevelopperForce上で機能していたテストコードが、デプロイ時にエラーとなる場合、ログを見るとエラーになった理由がきちんと記載されている。英語だがかなり具体的にエラー個所を指し示してくれている印象。かなり助かる。調べてみるとほとんどはテストコードのエラーではなく、環境の設定漏れ等からくるテスト対象のリソースで発生するエラーだった。ここを勘違いしてテストコードを修正して乗り切ろうとするとどんどん深みにハマる。
  • デプロイ時のテストにインサートの処理が含まれていると、自動採番の値がカウントアップされてしまう。
    おなじみウフルさんのブログにも書いてありました。
    [salesforce]テストコード内からレコード作成時に自動採番項目がカウントアップされてクリアできない問題
  • クラスやトリガは、可能な限りいっぺんにデプロイしたほうが良さそう。今回、個別にデプロイしたためにデプロイする順番で多少苦労した。つまり、クラスBのメソッドをトリガAで呼び出しているときには、当然クラスBからデプロイしなければならない。
  • ワークフローについては、DevelopperForceのルールの名称とForce.com IDEで取得したワークフローの名称が異なるので注意が必要。Force.com IDEのワークフローは、オブジェクト単位でまとめられてるっぽい。

ほんとにサンプル用の小さなアプリだったのに、試行錯誤で丸一日かかってしまいました。経験豊富な方々は効率的なやり方を知ってるんだろうな。
そのへん、ぜひ聞いてみたい...。

0 件のコメント: