Ruby/Rails

Rails 3.1でプリコンパイル済みのアセットを作成する

概要 Rails 3.1で新しいプロジェクトを作ったところ、本番環境でアセットがプリコンパイルされていないというエラーが発生しました。対策として、3.1から導入されたアセットパイプラインのために、プリコンパイル済みのアセットを作成しました。 ActionView:…

JavaScriptエンジンをインストールする

概要 Rails 3.1で新しいプロジェクトを作ったところ、本番環境でJavaScript runtimeが見つからないというエラーが発生しました。対策として、3.1から導入されたCoffeeScriptのために、JavaScriptエンジンをインストールしました。 Could not find a JavaScri…

Ruby 1.9.2のインストール

概要 Ruby 1.9.2のソースコードからRPMパッケージを作成し、インストールします。 構成 CentOS release 5.6 (Final) checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] 準…

ImageMagick + RMagickのインストール

概要 ImageMagickとRMagickをインストールします。 構成 CentOS release 5.7 (Final) ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] バージョンの選択 今回のプロジェクトではRuby 1.9 + Rails 3を使うことが決定しています。http://rmagick.r…

デプロイと同時にbundle installを実行する

検証環境 Ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] Rails 3.0.10 Bundler version 1.0.18 Capistrano v2.8.0 準備 準備といってもやるべきことはひとつだけです。BundlerにはあらかじめCapistrano用のcapタスクが用意されているので、$RA…

RVMのインストール 〜 CentOS 5.6編

検証環境 CentOS release 5.6 (Final) RVM 1.6.31 インストール 依存パッケージをインストールします シェルのバージョンを確認します。 $ bash --version GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software…

RDocでドキュメントを生成する

ドキュメントを生成する前にRDocをアップデートする場合は、 re RDocのアップデート - 祈れ、そして働け 〜 Ora et labora とりあえず生成してみる $ rdoc.rbファイルがあるディレクトリに移動して、rdocコマンドを実行します。RDocを意識したマークアップを…

後置判定の繰り返し文

繰り返す内容を最低一回は実行したい、というときに使う後置判定の繰り返し文ですが、Rubyではこう書きます。begin〜endで括るのがポイントです。while文 begin # 繰り返す内容 end while 継続条件 until文 begin # 繰り返す内容 end until 終了条件

swfmillとswfmill_rubyのインストール

CentOS 5.5 (Final) swfmill 0.3.1 いろいろハマッたので、最終的にインストールに成功するまでの経緯を残しておきます。なお、swfmill 0.3.1より前のパッケージは、Flash Lite 1.xの日本語エンコーディング形式であるcp932に対応していません。0.3.1より前…

RailsでURLエンコードする方法

ERB::Utilを使う方法 >> ERB::Util.url_encode("http://www.foobar.jp/baz/?qux=123&quux=xyz") => "http%3A%2F%2Fwww.foobar.jp%2Fbaz%2F%3Fqux%3D123%26quux%3Dxyz" CGIを使う方法 # エンコード >> CGI.escape("http://www.foobar.jp/baz/?qux=123&quux=xy…

RDocのアップデート

RDocをアップデートする Rubyと一緒にインストールされたRDocのバージョンが古いので、 # rdoc --version RDoc V1.0.1 - 20041108最新版にアップデートします。 # gem install rdoc NOTE: If you are running Ruby 1.9.2 you can ignore this message. RDoc …

Ruby Enterprise Editionのインストール

環境 CentOS 5.5 (Final) Amazon Linux 2010.11.1 (beta) 念のため、既存のyumパッケージをアップデートしておきます。 # yum check-update # yum update 開発ツール一式(GCCなど)をインストールします。 # yum groupinstall "Development Tools" ビルドに…

MySQL server has gone away

ステージング環境の挙動がおかしいので調べてみると、"MySQL server has gone away"というエラーが発生していました。どうやらクローズされたコネクション上でクエリを実行しようとすると、このエラーが発生するようです。もう少し詳しく調べてみました。 A.…

bz2

インストール bz2はlibbz2をRubyから扱うためのライブラリです。bz2をインストールするには、あらかじめbzip2-develパッケージをインストールしておく必要があります。 $ sudo yum install bzip2-devel $ sudo gem install bz2 --no-ri --no-rdocbzip2-devel…

RubyGems

$ gem install <gemパッケージ> --no-rdoc --no-riドキュメントが必要ない場合、--no-rdocと--no-riを指定することでインストール時間を短縮することができます。 --no-rdoc RDoc形式のドキュメントを生成しない --no-ri RIコマンドで読めるドキュメントを生成しない $ gem </gemパッケージ>…

cache_fuプラグイン

インストール cache_fu*1プラグインはActiveRecordの結果をmemcachedにキャッシュしてくれるプラグインです。GitHubで公開されています。 ruby script/plugin install git://github.com/defunkt/cache_fu.git 使い方 サーバーの一覧を取得します。 >> CACHE.…

ミリ秒の精度で時刻を表示する

ちょっと“実行時間を確認したい”ときに便利なTime.nowですが、秒の精度でしか表示できません。 >> Time.now => Sat Oct 30 01:46:23 +0900 2010 ボトルネックを探しているときなど、秒だと精度が足りないというときは、Time#usec*1を組み合わせることでマイ…

メッセージを委譲する

あるオブジェクトがメッセージを受け取った(メソッドが呼び出された)とき、実際の処理を他のオブジェクトに委ねることを“委譲(delegate)”と呼びます。RailsではModuleクラスのdelegateメソッド*1によって、委譲を簡単に実現することができます。 class B…

ルーティング

ルーティングの定義を一覧として表示します。 >> rs = ActionController::Routing::Routes >> puts rs.routesルーティングが受け取ったパスをどのように解析するかを表示します。 >> rs.recognize_path "/store"ルーティングが受け取ったパラメタからどのよ…

ハッシュにデフォルト値を設定する

例えばキーワードごとの出現回数を集計するとき、キーワードをキーに、出現回数を値にしたハッシュを使って集計することがあります。新しい要素のデフォルト値はnilですが、このようなときは0になっていて欲しいものです。要素を初期化する処理をブロックと…

RSpec on Railsのインストール

RSpec on RailsはRuby on RailsでRSpecを使うためのプラグインです。GitHubで公開されています。 RSpecとRSpec on Railsはバージョンを合わせておかないとうまく動かないことがあるそうなので、ここでは明示的にバージョンを指定しています。 ※1.3.2は1.3.0…

RSpecのインストール

RSpecはRubyでテスト駆動開発を実践するための代表的なテスティングフレームワークです。GitHubで公開されています。 RSpecとRSpec on Railsはバージョンを合わせておかないとうまく動かないことがあるそうなので、ここでは明示的にバージョンを指定していま…

number_validationsプラグインのインストール

number_validationsプラグインは数値のバリデーションを拡張するプラグインです。acts_as_opensocialプラグインと同じmasarakki氏によって開発されており、GitHubで公開されています。 ruby script/plugin install http://github.com/masarakki/number_valid…

cache_fuプラグインのインストール

d:id:tetsuyai:20101114の記事にまとめました。

acts_as_opensocialプラグインのインストール

acts_as_opensocialプラグインはオープンソーシャルアプリケーションを開発するためのフレームワークです。職場の同僚であるmasarakki氏が開発しており、GitHubで公開されています。 ruby script/plugin install http://github.com/masarakki/acts_as_openso…

attachment_fuプラグインのインストール

attachment_fuプラグインはファイルをアップロードするときに使う代表的なプラグインです。いまはGitHubで公開されています。 ruby script/plugin install git://github.com/technoweenie/attachment_fu.git

Capistranoとcapistrano-ext

CapistranoはRubyで作られたデプロイツールです。Railsを作った37signalsという企業で、自分たちが使うための実用的なツールとして作られました。Railsと相性がよいのはもちろんですが、Capistrano自体は汎用的なデプロイツールとして作られています。capist…

Railsアプリケーションの実行環境を構築する

環境 CentOS 5.5 Apache 2.2.3 Phusion Passenger 2.2.15 MySQL 5.0.77 Ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] Rails 2.3.8 RubyGems 1.3.7 Rubyのインストール RubyとRubyGemsはソースコードから最新版をインストールするので、yumでイン…

認証プラグイン restful-authentication

定番の認証プラグイン restful-authenticationを触ってみました。restful-authenticationはgithubでメンテナンスされています。まず、インストールします。 ruby script/plugin install git://github.com/technoweenie/restful-authentication.git

ハッシュのソート

ハッシュを値の昇順にソートします。値が同じときはキーの昇順にソートします。 h = {1 => 10, 2 => 1, 3 => 5, 4 => 5} h.sort {|(k1, v1), (k2, v2)| (v1 == v2) ? k1 k2 : v1 v2 }