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

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

rails

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

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

has_manyなモデルのid配列を取得するスマートなやり方

今日たまたまRailsのリファレンスを眺めていて見つけたのですが。下記のようなBlogモデルとEntryモデルがあるとします。 class Blog < ActiveRecord::Base has_many :entries end class Entry < ActiveRecord::Base belongs_to :blog end Blogモデルのインス…

script/console時に出る警告を消す

最近script/consoleをすると下記のような警告がでるようになっていました。 irb: warn: can't alias context from irb_context.起動時に警告が出る以外は特に支障はないのでしばらく放置していたのですが、今日やる気が出たので原因を調査してみました。する…

Rails2.3からflashの仕様が変わってる

flashに入れたオブジェクトは、「次のアクションまで有効」だったはずなのですが、Rails2.3からは「次にflashにアクセスされるまで有効」に変更になっているようです。 例 下記のようなコントローラで、indexアクションにアクセスすると、index2を経由してin…

M-x align-regexp便利

引数が多くて複数行にまたがるコードがあるとき、ruby-modeのインデントだと下記のようにちょっとみづらい感じになります。 validates_length_of :email, :within => 6..100 , :allow_blank => true, :too_long => "メールアドレスは100文字以内で入力してく…

Railsドキュメントの閲覧が超便利に

Railsのドキュメントを閲覧する時に、これまではこのグリモンを使っていてそれなりに快適だったのだけれど、下記のエントリで紹介されているドキュメントがそれを上回る快適ぶりで驚いた。検索のレスポンス早い!RailsのAPIをスマートに調べられるRails Sear…

Railsデプロイ買った

積読が多いので本を買うのは控えようと思っているのですが・・・これは買わざるをえないですね。Railsデプロイposted with amazlet at 09.03.20Ezra Zygmuntowicz Bruce A. Tate Clinton Begin オライリージャパン 売り上げランキング: 15474Amazon.co.jp で…

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

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

Passenger2.1.2リリース

Passengerの2.1.2がリリースされてました。バージョン2.1.2以前のものはRails2.3に対応していないとのことなので、Rails2.3を使う人はアップデート必須ですね。Phusion Passenger 2.1.2 (final) released « Phusion Corporate Blog

script/generate resource

いつの間にかscript/generateのGeneratorにresourceなるものが増えていました。 script/generate resource blog などとすると、 script/generate controller blogs script/generate model blog config/routesにmap.resources :blogsを追加 と同じことをして…

Rails2.2.2から2.3.1に移行

特に大きな問題なく移行できました。 やったこと config/environment.rbを下記のように変更。 # RAILS_GEM_VERSION = '2.2.2' unless defined? RAILS_GEM_VERSION RAILS_GEM_VERSION = '2.3.1' unless defined? RAILS_GEM_VERSION 下記のrakeコマンドでappli…

eager loadingって何?

memcachedで快速アプリケーション − @IT上記の記事で、こんなことが書いてありました。 以下に、Railを使用する際に用いられる一般的なパフォーマンス向上方法を紹介しよう。O/Rマッパーを介さずに直接SQL文を発行する →ActiveRecord::Base::find_by_sqlメ…

MacPortsでMysqlをインストールしてRailsで使う

sudo port install mysql5 +server sudo -u mysql mysql_install_db5 /opt/local/lib/mysql5/bin/mysqladmin -u root password 'hogehoge' sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist sudo gem install mysql --with-mysql-c…

Rails Engines

Ruby on Rails 2.3 Release Noteの1.2ではRails Enginesについて書かれています。昔からあった機能なようですが、僕は先日のRails勉強会でこれを読んで初めて存在を知りました。Release Noteには、Rails Enginesは「RailsアプリにRailsアプリを埋め込める機…

Rails勉強会@東京第38回に参加した(その2)

Rails勉強会@東京第38回に参加した(その1)に続いてその2です。後半セッションはrails2.3.0をほげるセッションに参加しました。基本的にはRails2.3.0のリリースノートに沿って、Rails2.3.0に何が追加されたかを確認する流れでした。なので以下のメモはほとん…

Rails勉強会@東京第38回に参加した(その1)

今日は、Rails勉強会@東京第38回に参加しました。Rails勉強会@東京38回前半はRspecとCucumberについて、後半はRails2.3.0についてのセッションに参加しました。とりあえず今日は前半セッションのメモを上げておきます。後半は明日。 RspecとCucumberについて…

Rails2.3.0リリース

Rails2.3のRelease Candidateである2.3.0がリリースされました。下記のコマンドでインストールできます。 gem install rails --source http://gems.rubyonrails.org Riding Rails: Rails 2.3.0 RC1: Templates, Engines, Rack, Metal, much more!

Railsのタイムゾーン雑感

Railsの2.1あたりからタイムゾーンのサポートがされるようになっています。RAILS_ROOT/config/environment.rbにて config.time_zone = 'UTC' の'UTC'部分をいじることによりタイムゾーンの設定が出来ます。日本国内オンリーでアプリを作る場合は、 config.ti…

今週のEdge Rails

Riding Rails: This Week in Edge Rails上記の記事を意訳したのでメモ。 トランザクションをネスト トランザクションをネストできるように。 ネストする時は:require_newオプションが必要。オプション指定がないと親のトランザクションの一部と見なされる。 …

emacsとRinariで快適Rails開発!

emacsでRails開発をする際、emacs-railsを使っている方が多いと思います。emacs-railsはとても便利なelispなのですが、最近は更新頻度が低く、rhtml→html.erbの対応も一部されていなかったりします。あとRspecの対応もイマイチ。emacs使いの人たちは一体どう…

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")…

Rails2.3新機能メモ

下記の文章はRiding Rails: This Week in Edge Railsをざっくり翻訳したメモです。かなり適当に訳しているので間違え等あればご指摘お願いします>< Rack integration script/serverがrackを通すようになって、rackで使えるサーバを使えるようになる。扱え…

script/runnerでのバッチファイル実行を短く書く

これまでrails上でのバッチ処理はscript/runnerを使って以下のようなコマンドで実行していました。 script/runner "eval(IO.readlines('hoge.rb').join)" でもこれ長いですよね。もっと短くする方法はないかなーと思ってscript/runner --helpしたら「こんな…

Rubyをインストールする前にreadlineをインストールしないとダメ

自宅で使っているサーバでscript/consoleをしたらエラーが出ました。 no such file to load -- readline (LoadError) どうやらreadlineを入れてなかったよう。でもirbは動いたのでなんだろうなーと思い調べたら、 また, irb は readline ライブラリにも対応…

Award on Rails 表彰式に行ってきました

今日は三鷹産業プラザで行われたAward on Rails の表彰式に行ってきました。 僕も今回出したのですが、完成度低かったのでだめでしたね(完成度低いのでURLは載せません><)。次回は受賞できるようにがんばります! というわけで受賞作品のメモ。 マイクロソ…

open_id_authenticationがgithubでの管理に移行してた

Rails2.2にしたらopen_id_authenticationを使った認証でエラー。なんでだろうなーと思い調べたら、いつの間にかgithubでリポジトリ管理するようになっていたんですね。もともとあったやつを消して、以下のようにインストールして解決。 script/plugin install…

Rails2.1系にCSRFに対する脆弱製が発見されました

Rails2.1系のwebサービスを公開している方は注意。Riding Rails: Potential Circumvention of CSRF Protection in Rails 2.1どういう事かというと、 通常、RailsはCSRFを防ぐために、フォームにtokenを自動で埋め込みリクエスト受付時に認証を行っています。…

Railsアプリのソースを公開する際に役立つtips(secretを自動生成)

最近はgithubやcodereposなどの共有レポジトリが流行っています(?)ね。僕はまだコミットした事はないのですが、パスワードなどの秘密の情報が存在するアプリケーションをコミットするときにはどのように秘密部分を加工しているのだろうなー?とずっと疑問に…

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

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

logrotateでログのローテーションをする

railsのproduction.logなどをローテーションする一般的な方法、logrotateについてのメモ書きです。 基本 /etc/logrotate.confにデフォルトの設定 /etc/logrotate.d/配下に個別の設定を書く 利用できるディレクティブ(の一部) daily or weekly or monthly ロ…