2013-02-07 49 views
0

我正在使用Fog並將其上傳到S3。上傳在開發過程中工作正常,但在製作時,它給了我這個錯誤:Carrierwave生產失敗:無法將nil轉換爲字符串

TypeError (can't convert nil into String): 
    app/controllers/pictures_controller.rb:29:in `create' 

(該行是圖片被保存的位置)。這是堆棧跟蹤的結束。

當我進入控制檯,並做到:

p = Picture.new(image: "~/rails_apps/my_app/current/app/assets/images/rails.png") 

它讓我在生產以下產品:

CarrierWave::FormNotMultipart: CarrierWave::FormNotMultipart 

...但使開發沒有抗議。也許這是一個線索。

任何想法爲什麼上傳不生產?

這裏是我的carrierwave.rb初始化:

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS',           # required 
    :aws_access_key_id  => ENV['AWS_ACCESS_KEY_ID'],      # required 
    :aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']#, # required 
    } 
    if Rails.env.production? 
    config.fog_directory = 'mydir'      # required 
    else 
    config.fog_directory = 'mydir-development'      # required 
    end 
    config.fog_public  = true         # optional, defaults to true 
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {} 
end 
+0

爲什麼不直接看app/controllers/pictures_controller.rb第29行? –

+1

嘿@Mörre,謝謝你檢查這個問題。該行讀取「if @ picture.save」。乾杯。 – bevanb

+0

因此,由於該行中沒有字符串,我猜棧跟蹤會稍微長一點......?沒有必要回應,我相信你可以在問自己之前做更多的事情(而且比我們更容易):)即使有人立刻給你答案,我建議你自己試着解決這個問題。我可能會因此迴應,我不知道你的情況或CarrierWave,所以如果這不是適當的建議,請不要受到侮辱。 –

回答

0

我遇到過類似的問題,事實證明,我的carrierwave和霧寶石是過時的(他們的工作完美,直到我升級到Rails 4)。也許你可以試試看。

gem 'carrierwave', '0.9.0' 
gem 'fog', '~> 1.3.1' 
相關問題