2012-01-01から1年間の記事一覧

jquery-rails 2.1.X で IE6 を使った際の不具合と対処

Rails 3.2.X で jquery-rails 2.1.X を使った際に <%= link_to 'サンプル', hoge_path, :remote => true %> のように remote を指定して ajax で通信するリンクが IE6 で動作しない問題が発生していました。本流の方にはマージされていないのですが、解決策…

ActiveRecord の scope で時刻が一度しか評価されない

表題の現象を確認するために、次のような scope を記述します。 class Hoge < ActiveRecord::Base scope :fuga, where(["some_time <= ?", Time.now]) end これは文法のエラーを起こさないので正しく動作しているように見えますが、実際にはアプリケーション…

PostgreSQL のインデックスはデフォルトで IS NULL 句に使用されない

表題の通り hoge テーブルの fuga 列にインデックスを作成しても CREATE INDEX hoge_fuga ON hoge(fuga); 条件に IS NULL を含む検索ではインデックスは利用されません。 SELECT * FROM hoge WHERE fuga IS NULL; 結果、上の SQL はレコード数が増えると低速…

MongoDB を Rails から使う、導入編

三周遅れくらいの話題ですが、最近お仕事で扱うデータのサイズや件数が増えて来て困る事が多いので今後に備えて。 MongoDB のインストール Windows でも Mac でもバイナリが配布されているのでダウンロードして解凍するだけで動き Linux の場合も大体のパッ…

Rails 1.X 系特有の case 節の不可解なエラーと修正

今更 Rails 1.X 系で作られたアプリケーションの保守をしている方がどの程度いるのかも定かではありませんが、ハマると気がつきにくいのでメモ。上記環境でビューで用いる .rhtml ファイルで次のような記述をすると、不可解な構文エラーが発生する事がありま…

Rails の Migration で MySQL の文字列型に BINARY 属性をつけるには

MySQL の文字列型が大文字と小文字を区別してくれない事をつい忘れてしまい、時々問題になるので備忘録を兼ねて。前述の通り MySQL では char や varchar さらに text 型と言った文字列型で大文字と小文字が区別されません。これを回避するにはカラムの作成…

【新曲】On A Rainy Day

新作を作ってみました。今回は Megpoid Adult に歌ってもらいました。イラストはたかはるさんに頂きました。http://takaharuti.main.jp/以下、解説です。 曲の構成 イントロ A B C 間奏 A B C 間奏2 B C エンディング割とオーソドックスなポップスの構成だと…

ActiveRecord のキャッシュをオフにする

あるテーブルのすべてのフラグを false にしたい時に、件数が多くなる事が予想されたので1000件ずつ処理しようと考え、次のようなコードを書きました。 while Hoge.where("flag IS true").count > 0 sql = "UPDATE hoge SET flag = false WHERE flag IS true…

Ruby 1.9 系ではファイルのオープン時にエンコーディングを指定しないとうまく書き込めない

表題の通りに、マジックコメントで # coding: utf-8 のように指定した ruby のスクリプトを使っている場合 open("hoge.txt", "w") do |file| file.puts NKF.nkf("-s", "ほげほげ") end のように NKF で変換をかけて書き込もうとしても、マジックコメントで指…

mail-iso-2022-jp gem を用いた際に Encoding::UndefinedConversionError が発生

Rails のアプリケーションで mail-iso-2022-jp gem の 1.1.6 を使っていたところ、表題のエラーが発生。 gem の中身を確認してみました。 vi /path/to/gem/mail-iso-2022-jp-1.1.6/lib/mail-iso-2022-jp/patches.rb# coding:utf-8 require 'mail' require 'b…

Ruby の OpenSSL ライブラリで証明書のエラー

タイトルの通り rvm でインストールした Ruby 1.9.3 で OpenSSL ライブラリを用いた時にエラーになりました。テストに使ったスクリプトは以下の通り。 require 'net/https' https = Net::HTTP.new('encrypted.google.com', 443) https.use_ssl = true https.…

link_to に :method => :delete を指定した時の動作

以下 Rails 3.2.2 について記述します。 scaffold 等で作られる削除のリンクは次のようになっていると思います。 <%= link_to 'Delete', users_path(@user), :method => :delete, :confirm => 'Are you sure?' %> これと同じコードを手で書いて使おうとした…

変数を含むパスの定義

Rails 3.2.2 で、パスに含まれる値を変数として扱うルーティングを定義したい時の記述方法について。 以下のサンプルではユーザの管理は User モデルで行い、必ず一意である name という値を持ち、ユーザ毎に Item モデルを操作可能だとします。まずは route…

自作曲解説 "fluorite"

今回はニコニコ動画に投稿してみました。動画でも紹介していますが、絵を描いてくれたのは葉葉波さんです。http://www.pixiv.net/member_illust.php?mode=medium&illust_id=25647899 曲の構成 A 間奏 A B A' 間奏 A B A' エンディングヴァース・コーラス・ヴ…

明示的なロックと自動的なロック

データベースがロックをかけるのは、明示的に指定した時だけではないというお話。http://www.postgresql.jp/document/pg813doc/html/explicit-locking.htmlPostgreSQL の明示的なロックについては上記ドキュメントの通りです。ドキュメントに記載された通り…

bundle update 実行時の注意点

アプリケーション開発中に何らかの理由(主に Rails のバージョン更新)で bundle update を実行する際の注意点について。アプリケーションサーバ(Webrick, Passenger, Unicorn 等)を起動した状態で bundle update を叩くと Gemfile.lock の更新が行われず…

Rails 3.2 で link_to :remote => true を使ってフォームに入力された値を取得する

Rails3 系では link_to_remote は link_to :remote => true に変更されています。 <%= link_to 'Ajax 風リンク', hoge_url, :remote => true %> この時 link_to_remote では使えた :with や :submit といった、現在フォームタグに入力された値を get で渡す…

Rails 3.2 で CarrierWave を使う時に public 以下にファイルを置きたくない場合

CarrierWave は便利なプラグインですが、デフォルト設定のまま Rails で使うと public 以下の誰でもアクセス可能なディレクトリにファイルを書き込んでしまいます。これでは困る場合は config/application.rb で以下のようにデフォルトのアップロード先を指…

Ruby の配列を別の変数に代入した際の挙動

Ruby のような言語を使っていると値渡しと参照渡しなどという概念もあまり意識しませんが、配列の代入は面白い挙動をするので備忘録として残しておきます。確認は Ruby 1.9.2 p290 を使い Max OS SnowLeopard で行いました。まず String 型を別の変数に代入…

Rails3.1 の initializers でコンフィグファイルを読み込む

config/app_config.yml という名前でファイルを作って config/initializers/app_config.rb から呼び出す時に APP_CONFIG = YAML.load(File.open(Rails.root + '/config/app_config.yml')) で読めるかなと思ったのですが、うまくいかない模様。Rails.root は …

自作曲解説 "Time To Say"

自作曲の解説です。何かの参考にしたり、私の打ち込みミスを発見するのに使ってください。http://soundcloud.com/projecthl2/time-to-say 曲の構成 イントロ A B C 間奏 A B C ソロ C エンディング コード進行 A B C メロ以外は譜面を書かずに作ったので割愛…

Rails3 の routes.rb に独自定義を追加する

通常の CRUD 操作に必要なルーティングの定義は resources でまかなえますが、よくある確認画面を挟む時のルーティングについて説明します。新規作成時の確認画面を confirm_create に、更新確認画面を confirm_update にそれぞれネーミングします。また、モ…

2012

コングラッチュレーション ,―==7 Congratulation! コングラッチュレーション |く ___ _> Congratulation! fll`ーU+' `''、 ー=| おめでとう・・・・・・・・! _,,..-´:|ヽー-;ー..,,_ . ,−=-, ,,..-‘≡≡:| ><´|≡::|ヽ おめでとう・・・・・・・・…