2011-08-25 68 views
1

我开始为应用程序编写测试,并且无法使测试环境正常工作。 我的系统有用于文件上传的回形针,它试图启动服务器甚至初始化新的公司记录!举例:测试环境 - 使用回形针的错误

# Company.rb line 3 
has_attached_file :photo, 
    :styles => {:medium => "200x300>", :thumb => "100x150>" }, 
    :storage => :s3, 
    :s3_credentials => "#{::Rails.root.to_s}/config/s3.yml", 
    :path => "/photos/:style/:id/:basename.:extension" 

# console 
ruby-1.9.2-p0 :001 > Company.new 
NoMethodError: You have a nil object when you didn't expect it! 
You might have expected an instance of Array. 
The error occurred while evaluating nil.[]= 
from /Users/san/Documents/san/app/vendor/plugins/paperclip/lib/paperclip.rb:232:in 'has_attached_file' 
from /Users/san/Documents/san/app/app/models/company.rb:3:in '<class:company>' 
from /Users/san/Documents/san/app/app/models/company.rb:1:in '<top (required)>' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:454:in 'load' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:454:in 'block in load_file' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:591:in 'new_constants_in' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:453:in 'load_file' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:340:in 'require_or_load' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:491:in 'load_missing_constant' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:183:in 'block in const_missing' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:181:in 'each' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:181:in 'const_missing' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in 'const_missing_from_s3_library' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rake-0.9.2/lib/rake/ext/module.rb:36:in 'const_missing' 
from (irb):1 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:44:in 'start' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:8:in 'start' 
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands.rb:23:in '<top (required)>' 
from script/rails:6:in 'require' 

你知道是什么原因导致了这个冲突,我该如何修复它?


我通过回形针文档阅读,我发现需要补充:

require 'paperclip/matchers' 
Spec::Runner.configure do |config| 
    config.include Paperclip::Shoulda::Matchers 
end 

spec_helper.rb。仍然得到相同的错误!

+0

公司模式的第10行是什么? –

+0

'has_attached_file:photo'行。 – sscirrus

+0

@RyanBigg - 我正在做更多的挖掘,并意识到它比Rspec更广泛。当我在我的测试控制台中运行像Employee.new这样简单的操作时,我得到了同样的错误(试图评估nil。[] ='并指向Employee的第一个附件)。 – sscirrus

回答

0

最后,通过将Paperclip降级到2.3.6,这正是我一直使用到一周前的错误。希望这有助于任何人在未来遇到这种错误!

0

我想那是什么s3.yml不包含您当前Rails环境的密钥,可能是test?加一个。这应该解决它!

+0

我检查了S3存储桶名称,access_key和secret_access_key,并且所有内容似乎都已检出。它可能是别的吗? – sscirrus