Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb をよろしくお願いします。

MySQL→SQLite3

今までDBはすべてMySQLを使っていたけど、少し前から各サービスをSQLite3へ移行させていて、 昨日、公開用サーバーのMySQLを落とした。

で、今日プラポケのステージ機能を実装してしまおうと思って作業してたら、 一見ちゃんと動いているかと思いきや、スケジュールまわりがなんかおかしい。 SQLite3にしたのがいけないのかなと思って、開発環境にMySQLを入れようとしたらうまくいかない。

apt-get install mysql-server

を実行すると、下記メッセージのまま固まってしまう。

Stopping MySQL database server: mysqld.

4.1を入れようとしてもやっぱり同じメッセージで止まる。 困った。

SQLite3が原因なのかどうかはっきりさせたいんだけどなあ。 さくっとステージ機能を実装するのは無理だった……。

permalink no tweet

Railsでケータイ対応をやりたいのだけど

いままでまったくやったことがないもんで、まず何から手を出せばいいのやら。 定番のプラグインとかありますか?

この手のプラグインは浮き沈みが激しそうなので、いまどきのやつを使いたい。

--

勉強中。

--

コントローラの中でlayouts/application.rhtmlを切ったり、差し替えたりするにはどうしたらいいんだろう。

→jpmobileを使うと、ケータイからのアクセス用のrhtml(application_mobile.rhtml)を用意できる。

--

Firefoxの拡張でケータイからの接続が確認できるやつとかないのかなあ。

permalink
category: Rails(39)
no tweet

Integration Test

先日からIntegration Testに挑戦(いまさらだけど)。噂には聞いていたけど使うのは今回が初めて。これまで結局テストはほとんど書いてなかったけど、これはいい。 こんなのがほしかった。

ひとつの流れの中で、ログイン失敗→サインアップ→ログイン→ログアウト→ログイン→ホーム画面表示→キャラクター表示→他人のキャラクター表示失敗、みたいのが書けちゃう。

permalink
category: Rails(39)
no tweet

helperとcontent_tag()で書き直してみた

もろはしさんからコメントを頂いたのでさっそくヘルパーとして実装してみた。 content_tag()は知らなかったので今まで使っていなかったよ……。

module ApplicationHelper
  def action_help
    html = begin
             render :partial => "helps/#{controller_name}_#{action_name}"
           rescue ActionView::TemplateError
             $!.to_html
           rescue ActionView::ActionViewError
             nil
           end
    html ? content_tag(:div, html, :class => :help) : ''
  end
end

ビューからの呼び出しは次のようになる。

<%= action_help %>

これまでヘルパーはあまり使ってなかった。というのはERBにガンガンロジック書くのが気にならないので。自分しか編集しないと割り切ってしまえば、ERBに何が書いてあってもいいかなと。でも今回の件はわざわざrhtmlを作るより、ヘルパーにメソッドとして定義するのが正解だと思う。

to_htmlというは、独自の拡張で、application_helper.rb(ここでいいのか?)に次のように書いてある。

class Exception
  def to_html
    "<h2>#{self.class}</h2>\n#{message}\n<pre>#{backtrace.join("\n\t")}</pre>"
  end
end

ちなみにビュー好きになったのは、勉強会でもろはしさんが「表示に関することならビューでやってしまう」おっしゃっていたことにインスパイやされた結果です。

permalink
category: Rails(39)
no tweet

ビューに書くのが好き

最近のオレはなんでもビューに書く傾向がある。 コントローラを書くのはDBに書き込むときだけで、ただ表示物を表示するだけの場合はビューで直接findしてしまう。 するとコントローラがすごく小さくなった。 とうぜんビューは大きくなるんだけど、今はゲームデザインの過程であれこれ悩んでUIを実装してみる作業ばっかりだから、 編集がビューに集中すると楽。

partialを多用してて細切れのrhtmlがたくさんできてるけど、気にしない。 次のような形でpartialを使う機会も増えている。

<%=
  html = begin
           render :partial => "helps/#{controller_name}_#{action_name}"
         rescue ActionView::TemplateError
           $!.to_html
         rescue ActionView::ActionViewError
           nil
         end
  html ? %Q!<div class="help">#{html}</div>! : ""
%>

help文をpartialで定義すると自動的にページに埋め込んでくれる仕組みなんだけど、 このテンプレート自体もpartialでlayoutから呼び出される。 こういうロジックをいっぱいビューに書いちゃう。

permalink
category: Rails(39)
no tweet