rails

image_tagで付加される画像のタイムスタンプを、production環境でも画像ファイルが更新されたタイミングで更新されるようにする

image_tagで画像を表示した際に、srcの後ろに付くタイムスタンプは 基本的には File.mtime(image_path) なので、画像ファイルの最終更新時刻です。 image_tag 'rails.png' #=> <img src="/images/rails.png?1298610241" alt="Rails" /> なので、developement環境では画像ファイルをtouchしてあげたりすると、タイム…

jpmobileを使って、au/softbankでも、controller内で、ドコモ絵文字にマッピング済みのutf8値を得る方法

非常にわかりにくいタイトルですが、 ユーザがテキストフォームに絵文字を入れて送ってきたときの話しです。以下のようなコードがあった際に、 class HogeController < ApplicationController mobile_filter def hoge # 例えば、ドコモの「晴れ」に対応する…

主キー(primary key)の id を任意に指定して、createする

# ruby script/console # 普通に指定しても無視される >> User.create(:id => 100) => #<User id: 1, created_at: "2010-12-13 02:47:03", updated_at: "2010-12-13 02:47:03"> # ブロックで指定すると >> User.create do |u| ?> u.id = 100 >> end => #<User id: 100, created_at: "2010-12-13 02:48:22", updated_at: "2010-12-13 02:48:22"> 使う機…</user></user>

sqlite3-ruby の version が 1.2.x だと、select AS で名前を指定したときに integer 型のカラムのはずが string 型で取れてくる件

sqlite3-ruby : version 1.2.5 $ rails testapp1 $ cd testapp1 $ ruby script/generate model user $ rake db:migrate $ ruby script/console >> User.create => #<User id: 1, created_at: "2010-11-25 08:49:43", updated_at: "2010-11-25 08:49:43"> >> User.first.id.class => Fixnum >> User.find(:first, :select =>…</user>

パラメータ(params, query_paramters, path_parameters)取得方法メモ

params だとpathパラメータまで混じってたので、クエリパラメータだけ取る方法などを調べてみたメモ。 hoge コントローラに indexアクションが存在している状態で、 config/routes.rb は以下とします。 ActionController::Routing::Routes.draw do |map| map…

あるモデルの配列から、モデルの1要素を値とする配列を作るメモ

きれいな書き方を教えて頂いたので、メモ たとえば、id, name, age, job_id といったカラムからなるUserモデルがあったときに、 特定の job_id の User の id 配列が欲しいという際にどう書くか。 # たとえば User.find_all_by_job_id(1)でこんな配列が取れ…

session の保存方法(session_store)の違いによるパフォーマンス(処理速度)テスト

cookie (default), ActiveRecord (:active_record_store), memcached (:mem_cache_store) を比較した。なお、セッション新規作成時(record insert)と、既にあるセッションでアクセスする時も比較した。 環境 findテストと同じですが、 App Server Amazon EC2…

routes の(記述量と)記述箇所の違いによるパフォーマンス(処理速度)テスト

下のような config/routes.rb を用意して、 routes_check の map.connect をループの上に書いたときと、 ループの下(コメントアウトされてる箇所)に書いたときで比較した。 ActionController::Routing::Routes.draw do |map| map.connect '/routes_check', :…

find方法の違いによるパフォーマンス(処理速度)テスト

環境 前回のフィルタテストと同じですが、 App Server Amazon EC2: Large Instance Apache: デフォルト設定 Ruby: 1.8.7 Passenger RailsEnv: production RailsMaxPoolSize: 30 RailsPoolIdleTime: 1200 Rails: 2.3.8 Request 兼 DB Server Amazon EC2: Larg…

filterのパフォーマンステスト

before_filter, after_filter, around_filter を枚数重ねて、 どのくらいパフォーマンスに影響が出るのかをざっくり調べてみた 環境 App Server Amazon EC2: Large Instance Apache: デフォルト設定 Ruby: 1.8.7 Passenger RailsEnv: production RailsMaxPoo…

paperclip の保存ディレクトリ名あるいはファイル名をid連番ではなく、MD5とかSHA1のハッシュ値にするメモ

画像を扱う際のrailsプラグインpaperclip GitHub - thoughtbot/paperclip: Easy file attachment management for ActiveRecord基本的な使い方は、githubとか紹介ページを参照してもらうとして、 ここでは画像保存のディレクトリ名あるいはファイル名をid連番…

(jpmobile の) mobile_filter hankaku => true は controller.response.body が freeze されてるとエラーになる

そもそも response.body が freeze された後に、文字変換すんなよというのは置いておいて。。。例えば、 class HogeController < ApplicationController mobile_filter :hankaku => true around_filter :my_around_filter # mobile_filter は around_filter …

before_filter, after_filter, around_filter, prepend_before_filter, prepend_after_filter, prepend_filter の順番整理メモ

before_filter before_filter :b1, :b2 # b1 --> b2 --> action before_filter :b1 before_filter :b2 # b1 --> b2 --> action before_filter + prepend_before_filter before_filter :b1, :b2 prepend_before_filter :b3 # b3 --> b1 --> b2 --> action bef…

jpmobile のmobile_filter を部分的に無効にする(強引な方法)メモ

使える状況が限られているし、jpmobile自体をいじるし、グローバル変数を汚すしで、 極悪な解だが、一応メモしておく。 たとえば下のように、親コントローラに mobile_filter を記述し、それを継承した子コントローラがいくつかあるとする # 親 class Mobile…

model のインスタンスを hash化する

使う機会はあまり無い気もするが、メモしておく*1 結論から書くと、モデルインスタンス#attributes とするだけ。 model_instance = Model.new attributes_hash = model_instance.attributes # {"attr1" => "val1", "attr2" => "val2", ...} p attributes_has…

ActiveSalesforce を使ってみたメモ

http://activesfdc.rubyforge.org/ を少し使う機会があったので、そのメモを。 ちなみに、Salesforce の知識はほぼ無い状態で触ってますのであしからず・・・。 なお、rails のバージョンは 2.3.5 です。 Setup と HelloWorld みたいなもの 1. install 公式…

public配下の任意の静的ファイルへのURLを作成するメモ

ローカルでは、http://localhost:3000/ で開発をしているが、 本番サーバで動かすときは、http://domain/prefix/ で動かしたい場合がある。 viewでリンクなどのURLを直書きしていると、相対パスなら大丈夫かもしれないが、 絶対パスは prefix があるせいで、…