在Sinatra里面的类表现奇怪

时间:2015-11-01 20:38:25

标签: ruby sinatra

我正在使用带有Ruby v2.2.2的Sinatra V1.4.6。我的目录结构是:

SinatraTest
    bin
       app.rb
    lib
       fix_month.rb
    views
       test_view.rb

我的app.rb文件是:

require 'sinatra'

require './lib/fix_month'

set :port, 8080
set :views, 'views'

get '/' do
  @month = FixMonth.from_string('Jan 16')
  erb :test_view
end

我的test_view.erb包含:

<html>
    <title>Test Page</title>
    <body>
        <%= @month %>
    </body>
</html>

最后,我的fix_month.rb包含:

class FixMonth < Fixnum
  def initialize(mon)
    super( mon )
  end

  def self.from_string( s )
    FixMonth.new(s.to_i)
  end

  def to_s
    "#{@@months_as_string[@mon]} #{year.to_s}"
  end
end

当我访问网站的主页时,代码会获得类方法FixMonth.from_string,然后发生以下错误:

2015-11-01 20:34:04 - NoMethodError - undefined method `new' for FixMonth:Class:

我需要什么才能像任何其他Ruby类一样使用我的FixMonth类?

1 个答案:

答案 0 :(得分:2)

  

我需要什么才能像任何其他Ruby类一样使用我的FixMonth类?

不从没有new方法的类继承。

Sinatra在这里是一个红鲱鱼,完全无关紧要。 Fixnum是直接值,Fixnum没有new方法。