おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

ruby

Paperclip的なプラグインDragonfly

Paperclip的なプラグインDragonflyの紹介記事Dragonfly: Image Handling For Championsの意訳です。ところでこのくらいの分量の「海外の記事のざっくりな意訳」ってどれくらい需要あるんでしょうかね?あんまり需要なさそうならこれ系の記事はサブアカに書い…

controllerを少しだけスリムにするtips

(※12月の1日から25日まで、日替わりで Ruby の Tips を紹介するイベント、 Ruby Advent Calendar jp: 2009 の 12 日目です。昨日は id:ohac さんでした。明日はうづら(udzura) さんの予定です。)Railsネタをひとつ書きたいと思います。 titleをviewで設定し…

Snow LeopardにRuby Enterprise Editionを入れる

Snow LeopardにRuby Enterprise Editionを入れる手順のメモです。 readlineをインストール どうやらLeopardと同じくSnow Leopardのreadlineにも不具合があるようなのでreadlineをダウンロードします。The GNU Readline Libraryからreadlineをダウンロードし…

amazon-ecsに署名認証をつけるようにした

8月15日までにamazonのAPIに署名認証をつけないといけなくなったわけですが、皆さんもう対応されましたか?Product Advertising API用のRubygemで有名なのものとしては amazon-ecs ruby-aaws などがあります。僕はamazon-ecsを使っていたのですが、こちらは…

Rubyの脆弱性が発見されました

RubyにDOS攻撃の脆弱性が発見されたようです。Riding Rails: DoS Vulnerability in Ruby DoS vulnerability in BigDecimal どんな脆弱性か BigDecimalからFloatに変換する部分に問題があるらしく、下記のように、大きい数値をRubyにパースさせることでDOS攻…

オブジェクトのコピーについて

Rubyでオブジェクトをコピーするメソッドには、Object#cloneとObject#dupの二種類があります。それぞれ少しだけ機能が違うようなのですが、参考書によって記述が異なっていて???となったので調べました。 参考書の記述 それぞれの該当部分を引用しますプ…

オブジェクトの比較をする方法まとめ

なんかいろいろ方法があるのでメモ。 equal? 同一のオブジェクトを参照してたらtrue。下記のコードと同じ。 a.object_id == b.object_id == ==で下記のオブジェクトを比較すると、値が等しいかどうかをチェックする。 String Array Hash FixnumとFloatの比較…

Mitaka.rb設立総会に行ってきた

今日吉祥寺で行われたMitaka.rb設立総会に参加してきました。やっぱり三鷹周辺の方が多かったですが千葉や埼玉や神奈川(僕ですね)から参加する人もいたりで国際色豊かな感じ?で飲んできました。「吉祥寺でRubyで飲むよー」って言ってすぐに30人集まるってい…

Rails2.3.1でopensocial-ruby-clientが動かない件

Rails2.3のRack統合でActionController::AbstractRequestがActionController::Requestに統合されたのが原因だった模様。下記のように書き換えて対処。 module OAuth::RequestProxy #:nodoc: all class ActionControllerRequest < OAuth::RequestProxy::Base …

Ruby温泉×2

3月はRuby温泉が二つも企画されてます。温泉入ってプログラミングしたい!でもお金ない!無念!Ruby 温泉 2009 March in 滋賀 : ATND Ruby 温泉 March 2009 (仮) : ATND

Ruby1.9.1をインストール

下記のようにしてインストールした。 ./configure --prefix=/usr/local/ruby19 --program-suffix=19 --enable-pthread --with-readline-dir=/usr/local --enable-shared make make install そしたら./configure時に下記のようなWARNING。--with-readline-dir…

ubuntuでcurb(curl)を使うには

libcurl4-gnutlsをインストールする必要があります。 sudo apt-get install libcurl4-gnutls-dev sudo gem install curb

Rubyでwebにアクセスするライブラリ、どれが速い?

なにやらRuby1.8.6のNet::HTTPは遅いという噂があります。InfoQ: RubyのNet::HTTPで何が良くないのか?それでは一体どのライブラリが一番速いのでしょうか。調べてみました。 大きいファイルをダウンロード localhost(apache)に置いた10Mのファイルをダウンロ…

daemonの作り方

先日webrickのソースを少し読んだのですが、daemonを作る部分がよくわかりませんでした。 def Daemon.start exit!(0) if fork Process::setsid exit!(0) if fork Dir::chdir("/") File::umask(0) STDIN.reopen("/dev/null") STDOUT.reopen("/dev/null", "w")…

do...endと{...}の違い

Rubyのブロックの記述方法にはdo...endと{...}の2種類があります。僕は基本的にRubyコーディング規約を参考にしてRubyコードを書いているのでdo...end派なのですが、Railsのnamed_scopeをこんな風に書いたらエラーがでました named_scope :hoge, lambda do …

Ruby Enterpriseがすごい

以前にも何度かインストールして感心しているんだけど、インストールしたばかりのまっさらなUbuntuに入れたらそのおもてなしのすごさを再確認した。 すごいところ インストールに必要なパッケージを教えてくれた インストール時の文字の色と背景色が変わるの…

Array()メソッドでArray変換を簡単に

最近、Array() というイディオムを教えてもらってので、覚えるために書きました。 Linux の不要サービスを停止するruby スクリプト - Slow Dance ArrayじゃなかったらArrayに変換するようなコードはこれまでこんな風に書いてました。 str_or_ary = str_or_ar…

Rubyのエラー関連メソッド

Rubyのエラー関連をちょっと調べてみたのでメモ。 raiseメソッド 引数の数によって挙動が少し違う。 raise 直前の例外の再発生。直前の例外がない場合はRuntimeError raise message messageをメッセージとするRuntimeErrorを発生 raise error_type, message …

ruby-debugでデバッグ

Railsアプリのデバッグをするとき、僕は基本的にはpを使ってます。pだけじゃしんどそうだなーという場合も時々あって、そういう時にはruby-debugを使ってます。でも時々なので使い方をよく忘れます。これは効率悪いですね。というわけでruby-debugの使い方を…

RailsのURLエンコード方法

これまでは、ここを参考に URI.escape( str, Regexp.new("[^#{URI::PATTERN::ALNUM}]") ) でやってたけど ERB::Util.url_encode で十分みたいね。 参考 cgi - Rubyリファレンスマニュアル erb - Rubyリファレンスマニュアル

初めてのRuby購入

初めてのRuby作者: Yugui出版社/メーカー: オライリージャパン発売日: 2008/06/26メディア: 大型本購入: 27人 クリック: 644回この商品を含むブログ (253件) を見る買う気なかったんだけど、下記の書評みたら欲しくなって注文してしまいました。どうせ買うな…

rubyでwebにアクセスするライブラリ、何使う?

rubyでwebにアクセスするライブラリが複数あります。 標準のライブラリ open-uri Net::HTTP gemライブラリ mechanize curb(curl) どんなときにどれを使ったらいいんでしょうね?ということで簡単にですがそれぞれの特徴を調べてみました。 open-uri この中で…

Mechanizeのバグではまった

rubyのMechanizeを使ってページを取得する際に、%が含まれるURLでバグが出るようです。まさかライブラリがバグってるとは思わず時間を浪費してしまいました・・・ 下記の記事を参考にMechanizeのコードを修正したらうまく動きました。 RubyのMechanizeではパ…

Ruby会議2008に行ってきました

スタッフの方、発表した方、参加した方お疲れさまでした。あと懇親会で話した方々もお疲れさまでした。 土、日と参加してみて、参加者全員のRubyへの溢れんばかりの愛を見せつけられました。まつもとさんが、「もとから良いものに技術者が集まるのではなく、…

明日Ruby会議に行きます

楽しみ。たくさん勉強してこようと思います。 日本 Ruby 会議 2008 - FrontPage

Rubyのアクセス制御について(protectとprivate)

なんとなく覚えてるだけだったので、きちんと調べてみました。 private Rubyのprivateはレシーバ形式*1での呼び出しが禁止になるという意味。selfレシーバが省略された形式(関数形式)でのみ呼び出し可能*2になる。関数形式で呼び出せるということは・・・…

文字列に指定の文字列が含まれているか調べる関数

いつものようにメモ。 javascriptの場合 String.indexOf("hoge") 戻り値は一致した文字列の先頭の位置。一致するものがない場合は-1。 String.search(/hoge/) 引数がRegExpオブジェクトなだけで他はindexOfと同じ。 rubyの場合 String#index("hoge") 戻り値…

instance_of?とis_a?の違いについて

これまであんまり厳格に区別してなかったので。メモ。 instance_of? foo.instance_of? Hoge fooがHogeクラスのインスタンスの時真 fooがHogeクラスのサブクラスのインスタンスのとき真 is_a? foo.is_a? Hoge fooがHogeクラスのインスタンスの時真 fooがHoge…

!がついているメソッド

rubyのリファレンスから引用。!がついているメソッドは破壊的なんだと思ってたけど違うのね。 あくまでも、「『!』が付いているメソッドと付いていないメソッドの両方があるときは、『!』が付いているほうが破壊的」というだけです。「『!』が付いているなら…

Ruby会議のチケットゲット

昨日予約して今日ゲット。なぜか入場券は店頭購入で懇親会チケットはクレジット決済でした。当日のホテルも予約しとかないとなー日本 Ruby 会議 2008 - FrontPage