2013-09-10 3 views
1

Я использую Rails 4 и assets_sync (который использует туман) использовать Amazon S3 для моих активов. Ведро S3 находится на «eu-west-1» (Ирландия).S3 + туман ошибок Перенаправление с ес-запад-1 ведро

В production.rb и development.rb среды я настроил следующую строку (будучи BUCKETNAME реальное имя ведро):

config.action_controller.asset_host = "http://s3-eu-west-1.amazonaws.com/BUCKETNAME" 

Кроме того, я создал переменные следующей среды : AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, FOG_DIRECTORY, FOG_PROVIDER (а также FOG_REGION = eu-west-1 в отчаянной попытке).

не имеет значения, что я делаю, я получаю следующее сообщение об ошибке (что уже posted in StackOverflow который ответ, который не помогает мне)

rake assets:precompile 
[WARNING] fog: followed redirect to BUCKETNAME.s3-external-3.amazonaws.com, connecting to the matching region will be more performant 
[WARNING] fog: followed redirect to BUCKETNAME.s3-external-3.amazonaws.com, connecting to the matching region will be more performant 
rake aborted! 
Connection reset by peer (Errno::ECONNRESET) 
(... more trace details ...) 

Несмотря на эту ошибку, активы иногда загружены (как APPLICATION- 7d888bd5c98564a528d102954bf2061a.css), который в любом случае делает работу, потому что прилжоение АКТИВОВ таким образом:

<link data-turbolinks-track="true" href="//s3-eu-west-1.amazonaws.com/BUCKETNAME/assets/application.css?body=1" media="all" rel="stylesheet" /> 

Если это поможет, я следующие варианты включены в производстве: config.assets.compile = false config.assets.digest = true

Любое предложение, которое могло бы помочь мне приблизиться к решению?

+0

Кажется, что я не имел _config.assets.digest = true_ активность в среде разработки. Предупреждения зон продолжают появляться, но все работает. –

ответ

4

Чтобы настроить туман S3 конечной точки:

Если вы используете Heroku:

heroku config:add FOG_REGION=eu-west-1 

Если вы используете пользовательские Rails инициализатору (конфиг/Инициализаторы/asset_sync.rb):

AssetSync.configure do |config| 
    config.fog_region = 'eu-west-1' 

Для получения дополнительной информации см .:

https://github.com/rumblelabs/asset_sync#built-in-initializer-environment-variables

Что касается конфигурации asset_host, я думаю, что текущая установка должна работать, но assets_sync readme имеет следующее примечание:

О, не по умолчанию S3 ведро области: Если ведро установлено значение регион , который не является стандартом США по стандарту США (us-east-1), вы должны использовать первый код url //#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com или amazon будет вернуть 301 постоянно перемещаются, когда запрашиваются активы. Обратите внимание на предостережение о названиях и периодах ковша.

Так что если вы видите какой-либо 301 перенаправляет при запросе активов, попробуйте:

config.action_controller.asset_host = "//BUCKETNAME.s3.amazonaws.com" 
+0

Спасибо за помощь, dcro. Я устанавливал FOG_REGION локально, используя env vars. Кроме того, я попробовал сервер ресурсов, на который вы ссылались, и он не работал (из-за другой проблемы), поэтому я изменил его на тот, который AWS использует для связывания файлов. Я проголосовал за ваш ответ так же правильно, как и все, что вы сказали, это правда и может помочь любому в той же ситуации, что и я. –

Смежные вопросы