2

Я получил class AvatarUploader < Carrierwave::Uploader::Base, которые хранят User аватар в public/uploads директории:Rails 3.2 Carrierwave ошибка прекомпиляции

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

    version :main do 
    process :resize_to_limit => [128, 128] 
    end 

И я хочу, чтобы запустить приложение в режиме production с активами прекомпиляции включены. Все, кроме аватаров, отлично работает. Когда я бываю в любой User профиль я получаю:

Started GET "https://stackoverflow.com/users/1" for 127.0.0.1 at 2012-05-03 17:45:24 +0300 
Processing by Users::UsersController#show as HTML 
    Parameters: {"id"=>"1"} 
    Rendered users/users/show.html.erb within layouts/application (2.5ms) 
Completed 500 Internal Server Error in 16ms 

ActionView::Template::Error (isn't precompiled): 
    87:      <%= image_tag @user.avatar_url(:main).to_s %> 
    app/views/users/users/show.html.erb:87:in `_app_views_users_users_show_html_erb___538221278131396366_28399560' 

Может быть, есть способ отключить прекомпиляцию аватар (потому что они могут быть повторно загружены, когда приложение работает на производстве). Просьба представить любые рекомендации по устранению этой проблемы. Благодарю.

ответ

7

Когда IMAGE_TAG получает пустую строку, он пытается получить ресурс из трубопровода активов и возвращает

"не прекомпилирована"

https://github.com/rails/rails/issues/3080

Печать @user.avatar_url(:main).to_s в двойная проверка

+0

Я проверяю URL-адрес, и он пуст (теперь я буду искать решение. вы за помощь! –