2005年07月02日

失敗:ソースコードの変更が反映されない!

先日、WebObjectsのアプリケーションを開発中に不可解な現象のためちょっと時間をとられてしまった失敗です。

画面の変更、ソースコードの修正などを行って、いつものようにコマンド+Rでビルド&実行しました。そして変更した画面のテストを行うと、うまく行きません。

実は関係ないのですが、ここでのエラーはPopupMenuでEntity一覧をプリフェッチして表示する部分ででています。新規追加なんですが、モデル中でフェッチスペックを作成してそれを使用するようにしているのですが、それが見つからないというエラーです。もっと別のエラーなら問題に早く気がついたんでしょうけど、こういう変更が反映されていないのはまたEOModelerかWOBuilderのバグなんだろうと、最初にへんな先入観を持ってしまったのが間違いでした。

まず、WOBuilderやEOModelerを終了して再起動したり、ターゲットをclean allしたりシステム自体を再起動したりといろいろやったのですが、まったく変化なし。しかたなく仮にフェッチスペックなしでやってみることにしました。

すると今度は、Entityへのアクセスで対応するアクセッサメソッドがないというエラーに変わりました。このあたりからなんだかおかしいなあと思い始めます。で、なんどかコードを変更してデバッグ文などを挿入しているうちに、プログラムへの変更自体が反映されていないのだと気がつきました。

そしてようやくここにきて、ビルドしているプログラムと実行しているプログラムは違うものなのではないか?という疑問を抱くことになりました。そうです、前日にアプリケーションをリリースするためにビルドスタイルをDeploymentに設定していたのを思い出しました。ビルドスタイルをDevelopmentに戻して再実行すると問題なく(バグはありましたが(^^;)変更が反映されました。

ここで気がつくのが遅れたことの原因のひとつに、画面自体は変更が反映されていたということがあります。WebObjectsの開発環境では実行中にWOファイルをオンザフライに変更してデバッグできる特徴があります。このためビルドしたものとは違う、最新のものが常に使用されていたようです。一方実行コードのほうはデバッグ実行では常にDevelopmentのものが使われるようです。XCodeになってからビルドスタイルがインストール後の状態ではプロジェクトウインドウに表示されないことも、気がつくのを遅されました。

教訓:ビルドターゲット/スタイルの確認を忘れずに。
posted by 永遠製作所 at 17:14| 東京 ☁| Comment(0) | TrackBack(0) | WebObjects | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。