2015-05-29 62 views
2

花費全天試圖使其發揮作用。在開發/本地計算機上運行時,Carrierwaves和我的文件上傳工作正常,但在ENV服務器上嘗試時:通過Capistrano進行生產和部署時,文件僅保存在uploads/tmp /中,而不是像我的image_uploader中所述。Carrierwave只將圖像保存爲tmp在Production-env

def store_dir 
    "#{Rails.root}/public/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

我嘗試了幾個建議,當我搜索但沒有解決這個問題。

此外,我的表單/帖子不會轉發給我,但我保持與我上傳的頁面相同,在開發/本地時不會發生這種情況。

下面是一些地方我deploy.rb,我認爲會解決這個問題:

set :linked_dirs, fetch(:linked_dirs) + %w{public/uploads} 

task :symlink_uploads do run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads" end

after :restart, :seed_roles, :symlink_uploads 

編輯問題: 我一定要擺脫tmp目錄上載圖片我希望他們被存儲在哪裏?

+0

請張貼'配置/初始化/ carrierwave.rb' –

+0

我沒有atm。在我的image_uploader我有存儲:文件。該怎麼辦? – Gurra

+0

什麼是在cache_dir中定義的 –

回答

0

請執行下列操作

,並設立

配置/初始化/ carrierwave.rb

CarrierWave.configure do |config| 
    config.root = Rails.root 
end 

https://github.com/carrierwaveuploader/carrierwave/wiki/how-to:-secure-upload

在這裏,你不需要改變store_dir

如果你想改變的隨機十六進制文件名

https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Create-random-and-unique-filenames-for-all-versioned-files

把下面的代碼在你上傳

def filename 
    "#{secure_token(10)}.#{file.extension}" if original_filename.present? 
    end 

    protected 
    def secure_token(length=16) 
    var = :"@#{mounted_as}_secure_token" 
    model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2)) 
    end 

希望它會解決這個問題

+0

感謝您的努力,但問題仍然存在,該文件保存在uploads/tmp/1432906113-19521-2715/thumb_elg.jpg中,並未保存。 – Gurra

+0

作爲事實的母親,這使得它存儲在公共/公共/公共/ – Gurra

+0

確定了它..它男子錯誤的模型類名稱或掛載爲 –