Rails

Capistranoの罠

某サイトのWebサーバーで毎日午前4時ちょうどから6時頃までロードアベレージが1.0に上がっていたので原因を調査した。Cronでupdatedbの処理に時間が掛かっていた。RailsアプリケーションのデプロイにCapistranoを使っているんだけど、Subversionのメタディレ…

ハマった

FastCGIの設定で "bin-path" => "/var/www/app/current/public/dispatch.cgi"と書いていてはまったorz 正しくは.fcgi

link_to_remote

link_to_remoteはデフォルトでhref="#"なんだけど、それだとAjaxが動かないブラウザでは困る。html_optionsにurl属性を指定すると書き換えられた。

MySQLで文字化け

Webアプリケーションとして実行する場合は config/environment.rb に ActiveRecord::Base.connection.execute("set names utf8")と書けばいいのだけど、rake db_structure_dump とかだと解決しない。仕方がないのでクエリを投げる前に強制的にutf8に変更。 m…

has_and_belongs_to_manyのcheckbox

手強かった。 <% Category.find(:all).each do |category| -%> <input type="checkbox" id="<%= 'product_categories_' + category.id.to_s %>" name="product[category_ids][]" value="<%= category.id %>"<%= @product.categories.include?(category) ? ' checked' : ''%> /> <% end %>全てのチェック外す事できてなかった。update_attributesする前に…

AjaxでJSONを返してJavaScript側でほげるのってめんどくさい。。。 結局サーバー側でHTMLを生成してAjax.Updater使うことにした。 この部分は partial template にすることで最初に表示するときも同じものを使える。 EffectはonCompleteで。

エラーメッセージの日本語化

意外とめんどくさかったりする。

human_attribute_name

日本語にしてみたくてMySQLに突っ込んだコメントを取得するようにしてみたのだけど。。。 こんな感じで。 module ActiveRecord module ConnectionAdapters class MysqlColumn attr_reader :name, :default, :type, :limit, :null, :comment def initialize(n…

shared partial

ヘッダー等の共通で利用する partial template は shared/_header.rhtml として作成して <%= render :partial => 'shared/header' %>と呼び出せばOK

Ruby on Rails

PHP飽きたので。 次の仕事はRailsでやることにしました。まだ全然理解してないけど。 つーかそもそもRuby自体理解してない(ぉ とりあえずブックマークにRails関係のものをひたすら突っ込みました。