2010-10-13 58 views
2

我很困惑這裏爲什麼回形針不適合我。回形針ruby on rails s3 to_file方法

當訪問S3上以前保存的文件,用於處理紙夾S3存儲類的此方法將導致一個錯誤:

def to_file style = default_style 
    return @queued_for_write[style] if @queued_for_write[style] 
    filename = path(style).split(".") 
    extname = File.extname(filename) 

正在發生的事情是該路徑被分成數組,然後是不由File.extname接受,它返回錯誤「無法將數組轉換爲字符串」。

我真的很感激這方面的一些建議;也許我的路徑是錯誤的,但我無法看到split如何返回除File.extname上導致錯誤的數組之外的任何內容。這在開發過程中工作良好,但不適用於上週末之前工作的heroku。

提前致謝。

編輯

增加了關於這個沉重的賞金這反映了我正在進行的無奈。真的,如果有人能幫我解決這個問題,我會非常感激。我排除了我以前的疑慮,也許這是heroku資源庫,通過重新安裝應用程序。

所有相關的代碼,至於我可以告訴大家:

#photo.rb 
has_attached_file :photo, 
    :styles => { 
    :list => "150x100#", 
    :article => "264>x210", 
    :large => "558>x380", 
    :original => "1024>x768" 
    }, 
:storage => :s3, 
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml", 
:url => ":s3_alias_url", 
:s3_host_alias => "files.mydomain.com", #s3 bucket with dns cname record to subdomain 
:path => "/photos/:hashed_path/:style/:id.:extension" 


#config/s3.rb 
bucket: files.mydomain.com 
access_key_id: ******************* 
secret_access_key: ********************************** 
+0

該代碼確實看起來不對。你有可能創建一個最小的測試應用程序來展示問題並將其放到github上? – kch 2010-10-15 19:35:52

+0

不幸的不是。這不可能是來自這個代碼的回形針的錯,因爲它在開發中可以正常工作。不能在本地重現錯誤,我已經說實話了。我將很快發佈一大堆代碼。 – mark 2010-10-15 19:44:19

+0

我打算在s3上運行heroku上的應用程序。 (我從你的zendesk支持票來到這裏,對不起,這個不清楚。) – kch 2010-10-15 19:48:04

回答

4

在紙夾的最新版本的bug負責這個。回到較舊的版本(看起來像2.3.3沒有這個問題),應該修復它。

這裏是錯誤引入的提交。甚至有人評論說,這可能是一個錯誤:

http://github.com/thoughtbot/paperclip/commit/1fef4c302d076575a1ca9691e01eb96ee9262ebc#commitcomment-166132

我爲什麼這個本地工作的理論,但沒有在Heroku是因爲這是在to_file方法被操縱的文件系統路徑是在每個環境不同,和Heroku上的一個會受到這個bug的影響,但不知怎的,你的本地路徑正在避開它。

+0

哦,我的...你沒有:O – mark 2010-10-15 20:55:25

+0

繼續前進,這只是成爲我在幾天內堆棧溢出閱讀的最有趣的線程。 – pjmorse 2010-10-15 21:08:54