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

Ruby1.8.7でacts_as_attachmentするとエラーに

rails

昨日から自宅サーバで動かしているRailsを引越ししているのだけれども、Ruby1.8.6環境では動作していたのに1.8.7だとエラーになった。

こんなかんじでacts_as_attachmentしていて。

class Photo < ActiveRecord::Base
  acts_as_attachment :storage => :file_system, :resize_to => '200x150'

script/consoleでアクセスするとこんな感じ。

>> Photo.count
NoMethodError: undefined method `[]' for #<Enumerable::Enumerator:0xb70d3b28>
        from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/core_ext/string/access.rb:43:in `first'
        from /hogehoge/trunk/vendor/plugins/acts_as_attachment/lib/technoweenie/acts_as_attachment.rb:48:in `acts_as_attachment'

まぁ、以下のように書き換えてやりすごす。

$ pwd 
/hogehoge/trunk/vendor/plugins/acts_as_attachment/lib/technoweenie
$ diff acts_as_attachment.rb.orig acts_as_attachment.rb
48c48
<         options[:file_system_path]   = options[:file_system_path][1..-1] if options[:file_system_path].first == '/'
---
>         options[:file_system_path]   = options[:file_system_path][1..-1] if options[:file_system_path][0] == '/'