読者です 読者をやめる 読者になる 読者になる

sessanの日記

主に開発技術関連でお勉強したことをまとめていくサイトです。

ActiveRecordのincludesに条件を指定する

ActiveRecordのhas_manyなどで持っているassociationをincludesするクエリをかくときに、動的にパラメータを渡してincludesする範囲を絞り込みたいときは、whereを使うと良いのだけど、単純にwhereだけを使わずに、referencesも一緒に使う必要があるらしい。…

rvmのアンインストールとrbenvのインストール

自宅の古いMacBookAirの環境整備をしたときのメモ rvmのアンインストール $ rvm seppuku でアンインストールできる。 ~/.rvm以下のフォルダの中身をごっそり消してくれるはずなんだけど、権限によっては消されないフォルダが出てきたりするので、本気で切腹…

rvmでインストール可能なrubyのバージョンリストを表示する

$ rvm list known

rubyで整数の桁数が足りない分を0で穴埋め

3桁で、0で穴埋めをする。sprintfを使う。 for i in 1..200 do puts sprintf("%03d",i) end

正規表現で最短一致を扱う

(((あああ)))いいい(((ううう)))のような文字列で(((と)))に囲まれている部分を全部空白文字に変換したい場合、単純に次のようにやってしまうと、残って欲しい「いいい」の部分もきえてしまう。 test = "(((あああ)))いいい(((ううう)))" puts test.gsub(/\(…

特定のバージョンのgemをインストールする

覚えるためにメモっとく。 特定のバージョンをインストール $ gem install cocoapods --version=0.24.0 特定のバージョンをアンインストール $ gem uninstall cocoapods --version=0.22.3

gemReco

RとRubyによるデータ解析入門の翻訳者らしく、rubyからRの分析を呼びだして、分析結果をWebで見ることができるサービスを作りました(まだ公開していない)。RとRubyを連携させるところとか、今方法を知りたい人は多いと思うので徐々に説明していければと思…

rubyのパッチレベルをp392に上げる

一つ前のエントリでパッチレベルを間違えていた。 herokuの1.9.3のパッチレベルは、392なので、そっちにするまずは、rvmを最新版に $ rvm get stable $ rvm reload そして、 CC=gcc-4.2 rvm install ruby-1.9.3-p392 --with-openssl-dir=$rvm_path/usr と。

rvmでruby 1.9.3-p362をインストールする

herokuのrubyの1.9.3のパッチレベルがp362に上がるのでローカルの環境も揃えようとしたら例によってハマったので、メモ。⇒あとで分かったが、herokuのパッチレベルはp392だった。。。やり直し。最初にこれを実行するとエラーが出た。 $ rvm install ruby-1.9…

Railsで日付型をdatetime型に変えるときの注意点

Date.today.to_datetimeとかやると、タイムゾーン情報が消されてしまって意図した時間にならなかった。 1.9.3p327 :014 > Date.today.to_datetime => Tue, 19 Feb 2013 00:00:00 +0000 しかし、to_timeならタイムゾーン情報が失われない。 1.9.3p327 :013 > …

Rubyでhtmlタグが含まれたテキストをサニタイズする

rgrove/sanitize · GitHubを使うと簡単にできる。 require 'sanitize' html = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg">' Sanitize.clean(html) # => 'foo'

RVMで、ディレクトリーごとに使用するrubyのバージョンを変更する

railsなどを使って開発しているときに、アプリケーションごとに使用しているrubyのバージョンが違うことがある。こういうときに、毎回rubyのバージョンを切り替えるは面倒なので、アプリケーションのルートディレクトリ直下に、以下の様な内容の.rvmrcファイ…

Herokuで稼働しているRailsをバージョン3.2.10に上げるために行ったこと

rails 3.2.10でセキュリティパッチが当たっていたので、herokuで稼働中のサービスのrailsのバージョンを上げたときの作業メモ。 前提 Herokuでrailsアプリを稼働していた。railsのバージョンは3.2.8 rubyのバージョンは1.9.2であった 手順 rails 3.2.10で推…

heroku上で動いているrubyのバージョンを確認する方法

すごく普通。 > heroku run ruby -v ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux] heroku上でruby -vするだけ。

rvmで新しいバージョンのrubyをインストールする

何も考えずにrvmで新しいバージョンのrubyをインストールしたら、openssl周りでエラーが出るようになったので、メモ。新しいバージョンのrubyをインストールする前に、opensslをインストールしてから、そのopensslと一緒にコンパイルしたrubyをインストール…

rvmのアップデート

rvmのバージョンが古いとrubyの新しいバージョンをインストールしようとした時にエラーが出る場合がある。そういうときは、rvmをアップデートする必要がある。rvmは、インストールスクリプトがアップデート用にも作られているので、これを実行すればよい。 …

RubyのTime型のオブジェクトをiso8601形式の文字列に変換する

Paypalなどではiso8601形式の時刻を使ってAPI呼び出しをする必要があるので、以下のようにしてiso8601形式の文字列に変換する > Time.now.iso8601 => "2013-01-08T11:22:22+09:00"

nil.to_iは0になるので注意

nil.to_iはnilになってほしいな。nilと0とは大分意味違うと思うんだけど。 ruby-1.9.2-p290 :001 > nil.to_i => 0

Rubyのinjectの使い方

作業をしていて、初めて見て驚いたのでメモ。例えば、1から10の平均値を求める場合、普通に考えると以下のようなコードを書くと思います。 def average1to10 average = 0.0 (1..10).each do |num| average += num.to_f / 10 end return average end これをin…

Railsのモデルの新規作成時のみにバリデーションを掛ける

Railsのモデルの機能を使ったバリデーションは便利だが、すでにリリースしたサービスにバリデーションを追加する場合、既にあちこちにそのモデルの更新処理があったりして、そこで全てバリデーションに引っかかるのは困る、という場合がある。そんなときは、…

ActiveRecordでSQLを指定して実行する

IN句やEXISTS句はActiveRecordがサポートしていないので、最後の手段でSQLを直打ちするときは、以下のようにする User. find_by_sql([ 'SELECT users.* from users WHERE ' + 'NOT EXISTS ' + '( ' + 'SELECT hoges.* FROM hoges WHERE ' + 'hoge.attr = ? A…

rubyのeachメソッドでインデックスを取得する

普通のeachだとindexが取れないので、each_with_indexを使う。 users.each_with_index do |user, index| puts (index + 1).to_s puts user.name end indexは0から始まります。

rvmのインストール

herokuでアプリを開発するために、Mac OS X Lionでruby 1.9.2を使えるようにした上で、かつ、今後バージョンを切り替えられるようにrvmをインストールしようと思い立つ。最初は、MacPortsでインストールしようとしたが、ビルドに失敗した。 MacPortsでrvmの…