5

Amazon cloudfront cdn を使用してアセットを配信する Rails 3.1.0 heroku アプリがあります。背景画像を除いてすべて正常に動作し、レンダリングされませ GET box.png 403 Forbidden d2g4atxxxxxx.cloudfront.net 231 B 54.240.xxx.xxx:xxhttp://d2g4xxxxxxxx.cloudfront.net/assets/box.png。画像がフィンガープリントされていないことを確認してください.application.cssには、これがあります 私がbackground-image:url('box.png'); 試したもの

1回目

.erb を application.css に追加して追加し、background-image:url(<%=asset_path 'box.png'%>); 次に追加 しましconfig.action_controller.asset_host="http://mybucket_name.com.s3.amazonaws.com"
た。

bundle exec rake assets:precompile

それから私はに戻った

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

それから私はやった

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

しかし、それはうまくいきませんでした

2回目の試行

.scss を application.css に追加して追加し、background-image:image-url('box.png'); 次に追加 しましconfig.action_controller.asset_host="http://mybucket_name.com.s3.amazonaws.com"
た。

bundle exec rake assets:precompile

それから私はに戻った

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

それから私はやった

次に、gemfileに追加 gem 'compass-rails'してcompass.rbを作成し、これを追加しました

   #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

しかし、それもうまくいきませんでした

私が持っているもの

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

質問

私は何を間違っていますか?またはどのステップが欠けていますか?誰かがステップを順を追って説明してくれませんか?私は1週間を費やして、これに関するさまざまなブログやさまざまな質問を読んでいますが、うまくいきません.よろしくお願いします

4

1 に答える 1

4

S3 の代わりに CloudFront でカスタムオリジンを使用しています。これは、CloudFront が S3 ではなく Rails アプリを指していることを意味します。これにより、すべてのアセットがバージョン管理され、問題が解決する可能性があります。

Rails アセット パイプラインを使用する場合のカスタム オリジンを使用した CloudFront に関する記事を次に示します。このトピックについてさらにグーグルすることができます:

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

詳細情報を含む別のSOの質問は次のとおりです。

Amazon CloudFront への Rails 3 自動アセット展開?

于 2012-11-12T09:18:11.660 に答える