2012-08-03 64 views
0

我有以下幾點:NoMethodError

# lib/devblog_extensions.rb 
module DevblogExtensions 
    class Time 
    def self.random_date 
     # implementation ... 
    end 
    end 
end 

# spec/factories/posts.rb 
FactoryGirl.define do 
    factory :post do 
    release_date Time.random_date # NoMethodError occurs 
    end 
end 

然後在config/application.rb我:

config.autoload_paths += %W(#{config.root}/lib)

但是當我運行rspec我仍然獲得了NoMethodError ,所以我錯過了什麼?謝謝!

+0

爲什麼路徑如此不同?你的規範路徑是不是'spec/lib/devblog_extensions.rb'? – maxko87 2012-08-03 17:11:48

回答

0

你可能丟失包含

# spec/factories/posts.rb 
include DevblogExtensions 

FactoryGirl.define do 
    factory :post do 
    release_date Time.random_date # NoMethodError occurs 
    end 
end 

UPDATE:速戰速決

# lib/devblog_extensions.rb 
module DevblogExtensions 
end 

class Time 
    def self.random_date 
    Time.now 
    end 
end 
+0

仍然得到'NoMethodError',再加上我認爲在'config/application.rb'中自動加載它會使它在整個應用程序中都可用,而無需使用'include'? – 2012-08-03 17:17:59

+0

請看更新。我相信它可以得到改善。 – 2012-08-03 17:36:43

+1

這有效,但我感到有點不安。 Fyi,在'config/initializers'中添加一個初始化器.rb文件,並簡單地'require'該初始化器中的模塊。這樣,你不必在文件頂部包含''。 – 2012-08-03 19:57:50