Rails aliyun-oss-sdk-for-ruby 问题

匿名 · 2014年06月13日 · 最后由 rockuw 回复于 2015年12月05日 · 3570 次阅读

用 rails 写了一个简单应用,使用 aliyun-oss-sdk-for-ruby 碰到如下错误,

/home/vagrant/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/aliyun-oss-0.7.0.1397365150/lib/aliyun/oss/extensions.rb:224: `@@{' is not allowed as a class variable name
/home/vagrant/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/aliyun-oss-0.7.0.1397365150/lib/aliyun/oss/extensions.rb:224: syntax error, unexpected end-of-input
        unless defined? @@{:instance_writer=>false}
                          ^ (SyntaxError)

源代码在此 (221 行起)

class Class # :nodoc:
  def cattr_reader(*syms)
    syms.flatten.each do |sym|
      class_eval(<<-EOS, __FILE__, __LINE__)
        unless defined? @@#{sym}
          @@#{sym} = nil
        end

        def self.#{sym}
          @@#{sym}
        end

        def #{sym}
          @@#{sym}
        end
      EOS
    end
  end

先把问题放到这里,看哪位大侠能解救我。明天继续搞,

很显然是实参问题,希望传过来的是一堆 sym 用来定义类方法,但是传过来了一个 hash。

应该是字符串。。。。不应该理解为 sym

应该是字符串。。。。不应该理解为 sym。

应该是字符串。。。。不应该理解为 sym。

cattr_reader "a", "b", "c"

搞了半天这不就是 arrt_reader :attr 吗?

匿名 #7 2014年06月13日

嗯,aliyun-oss-sdk-for-ruby 自己扩展的这个方法跟 Rails 的 cattr_reader 有冲突,解决中。

@pynix 这么热心,实在感动,谢谢!

#7 楼 @fanzc 楼主你好我也遇到了这个问题 请问你解决了吗 是如何解决的

匿名 #10 2014年10月11日

我重新打包了一下,aliyun-oss-ex,使用这个包可以解决

#10 楼 @fanzc 谢谢 已解决 没用 gem 直接放在项目中了 gem 引入之后会出错

需要 登录 后方可回复, 如果你还没有账号请 注册新账号