2013-12-18 7 views
0

В моем приложении я использую загрузку файлов с помощью Carrierwave. Я делаю изменения размера изображений с MiniMagick и сохранить изображение в виде большой версии, как это:Почему link_to helper показывает неправильный путь в Rails-производстве?

version :large do 
    resize_to_limit(100, 100) 
end 

В представлении я называю это «большой» версии:

<%= image_tag @user.avatar.url(:large) %> 

В окр развития, появляется изображение и путь правилен:

<img src="/uploads/user/...."> 

Но в производство окр, не получает изображение отсутствует, потому что оказывает WRO нг путь (он дописывает APPNAME):

<img src="appname/uploads/user/...."> 

я использую сервер Ubuntu с Nginx, Unicorn, Capistrano, Ruby 2.0.0p353 и Rails 4.0.2

nginx.conf:

upstream unicorn { 
    server unix:/tmp/unicorn.appname.sock fail_timeout=0; 
} 

server { 
    listen 80 default deferred; 
    server_name appname.domain.com; 
    root /home/deployer/apps/appname/current/public; 

    location ~ ^/(assets)/ { 
    root /home/deployer/apps/appname/current/public; 
    gzip_static on; # to serve pre-gzipped version 
    expires max; 
    add_header Cache-Control public; 
    } 

    try_files $uri/index.html $uri @unicorn; 
    location @unicorn { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://unicorn; 
    } 

    error_page 500 502 503 504 /500.html; 
    client_max_body_size 4G; 
    keepalive_timeout 10; 
} 

carrierwave загрузчик:

class UserUploader < CarrierWave::Uploader::Base 

    include CarrierWave::MiniMagick 

    storage :file 

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

    version :large do 
    resize_to_limit(100, 100) 
    end 

end 
+0

Как выглядит ваша конфигурация nginx? У вас есть промежуточное ПО промежуточного уровня, которое переписывает пути загрузки, или nginx обслуживает статические активы и т. Д.?? – cpjolicoeur

+0

@cpjolicoeur должен быть установкой по умолчанию, я добавил nginx.conf – crispychicken

+0

как насчет вашей конфигурации несущей? – cpjolicoeur

ответ

0

Наконец, он работает. Мне пришлось удалить эту строку из production.rb (которую я изначально разместил там для обслуживания нескольких приложений с рельсами):

config.relative_url_root = "/appname"