2012-11-11 16 views
5

Mam aplikację heroku rails 3.1.0, która korzysta z chmurki cdn w chmurze Amazon, aby dostarczać aktywa. Wszystko działa dobrze, z wyjątkiem obrazu tła, którego nie jest renderowane.Sprawdzenie żądania w Firebug/YSlow pokazuje GET box.png 403 Forbidden d2g4atxxxxxx.cloudfront.net 231 B 54.240.xxx.xxx:xx oraz adres URL do obrazka jest http://d2g4xxxxxxxx.cloudfront.net/assets/box.png .Jak widać nie jest to zdjęcie nie jest fingerprinted.In application.css mam ten background-image:url('box.png'); rzeczy, które próbowałemProblem z obrazem tła w rurze Rails 3.1 z chmurą CDN

1st spróbuj

że dołączono .erb do application.css i dodano background-image:url(<%=asset_path 'box.png'%>); Potem dodaje config.action_controller.asset_host="http://mybucket_name.com.s3.amazonaws.com"
Potem tak

bundle exec rake assets:precompile 

Potem przełączony

config.action_controller.asset_host ="http://d2gxxxxxxx.cloudfront.net" 

Potem zrobił

git add application.css.erb 
git commit -a 
git push origin master 

Ale to nie zadziałało

2-te spróbować

I dołączana .scss do application.css i dodał background-image:image-url('box.png'); Potem dodaje config.action_controller.asset_host="http://mybucket_name.com.s3.amazonaws.com"
Potem zrobiłem

bundle exec rake assets:precompile 

potem z powrotem przełączony do

config.action_controller.asset_host ="http://d2gxxxxxxx.cloudfront.net" 

Potem zrobiłem

Potem dodaje gem 'compass-rails' do gemfile i stworzył compass.rb i dodało ten

#In compass.rb 
    project_type = :rails 
    line_comments = false 
    generated_images_dir = "public/assets" 


bundle install 
git add application.css.scss compass.rb 
git commit -a 
git push origin master 

Ale też nie działa

Co mam

gemfile

source 'http://rubygems.org' 

    gem 'rails', '3.1.0.rc8' 


    group :development do 
    gem 'sqlite3' 
    end 
    gem 'geocoder' 
    gem "dynamic_form" 
    gem 'devise' 
    gem 'rack', '1.3.3' 
    gem 'execjs' 
    gem 'carrierwave' 
    gem "meta_search",'>= 1.1.0.pre' 
    gem "thumbs_up" 
    gem 'geocoder' 
    gem 'fog' 
    gem 'koala' 



    group :production do 
    gem 'pg' 
    gem 'therubyracer' 
    gem 'unicorn' 

    end 
    gem 'jquery-rails' 
    gem 'thin' 

    gem 'mongrel', '1.2.0.pre2', :group => :development 

    gem 'sass-rails', " ~> 3.1.0.rc" 
    gem 'coffee-rails', "~> 3.1.0.rc" 
    gem 'uglifier' 
    gem 'yui-compressor' 
    gem "asset_sync" 
    # gem 'compass-rails' 


    group :test do 
    # Pretty printed test output 
    gem 'turn', :require => false 
    gem 'rspec-rails' 
    gem "factory_girl_rails" 
    gem 'capybara' 
    gem "guard-rspec" 
    end 

app/config/enviroenments/production.rb

Deals::Application.configure do 

    config.cache_classes = true 

    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 
    config.action_controller.asset_host ="http://d2g4xxxxxx.cloudfront.net" 

    config.serve_static_assets = true 

    # Compress JavaScripts and CSS 
    config.assets.compress = true 
    config.assets.compile = true 
    config.assets.digest = true 
    config.assets.css_compressor = :yui 
    config.assets.js_compressor = :uglifier 
     config.i18n.fallbacks = true 
    config.active_support.deprecation = :notify 
    end 

Pytanie

Co robię źle? czy co krok jestem brakuje, może ktoś mi chodzić po schodach proszę? Mam spędzić cały tydzień czytając różne blogi i inna pytania na ten temat bez powodzenia. Dzięki z góry

+0

podczas próby dostępu do obrazu tła w przeglądarce, to działa poprawnie? –

Odpowiedz

4

Używam niestandardowych początków z CloudFront zamiast S3. Oznacza to, że CloudFront wskazuje na twoją aplikację Rails zamiast S3. Spowoduje to, że wszystkie twoje zasoby będą wersjonowane dla Ciebie i może rozwiązać Twój problem.

Oto artykuł o CloudFront z niestandardowymi początkami podczas korzystania z Rails Asset Pipeline. Możesz Więcej na temat:

http://blog.ertesvag.no/post/10720082458

Oto kolejny SO pytanie o więcej informacji:

Rails 3 automatic asset deployment to Amazon CloudFront?

+0

To jest dobra opcja, ale mam dużo zdjęć, więc chciałem je w s3. – katie

+0

Zanim spędzasz zbyt wiele czasu z CSS, upewnij się, że obrazy są dostępne poprzez bezpośredni link do S3. 403 Zabronione oznacza, że ​​twoje uprawnienia nie są poprawnie ustawione na wiadrze S3. Upewnij się, że wszyscy mają dostęp do plików w Twoim segmencie. Czy to oznacza "nie działa" przy każdej próbie? – joelvh

+0

Reszta zdjęć jest ładowana poprawnie z s3, tylko obraz w tle ma tylko problemy. – katie