2016-09-23 3 views
1

Я установил S3, и он отлично работает на героку. Когда я пытаюсь запустить RAILS_ENV=production bundle exec rake assets:precompile, чтобы перетащить активы в герою, он возвращает указанную выше ошибку. Если я запускаю конфигурацию heroku, у нее уже есть ведро S3 и все остальное.KeyError: ключ не найден: «S3_BUCKET_NAME»

Что он ищет и почему он не может найти имя S3 для компиляции активов.

В production.rb

config.paperclip_defaults = { 
    storage: :s3, 
    s3_credentials: { 
     bucket: ENV.fetch('S3_BUCKET_NAME'), 
     access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
     secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
     s3_region: 'us-west-2', 
    } 
} 

Я нашел пару SO на этом, но никто не указывает меня к решению. Любая помощь приветствуется!

ОБНОВЛЕНИЕ: Причина, по которой я должен скомпилировать локально, состоит в том, что heroku извлекает файл application.js.

remote:  Running: rake assets:precompile 
remote:  I, [2016-09-23T15:12:53.753671 #267] INFO -- : Writing /tmp/build_97a8fe2ca07bc4bf090be26f2be2872b/public/assets/application-9c608f99ae2b1980d74ba674b9f9ff7f0ae113d532e2c2ea580960a6a53346bb.js 
remote:  Asset precompilation completed (6.54s) 
remote:  Cleaning assets 
remote:  Running: rake assets:clean 
remote:  I, [2016-09-23T15:12:55.908630 #273] INFO -- : Removed application-489c5647af1ca8b6a56e560e8a83d77a1a070778dabb4f0b40f55c4a4e5b8feb.js 

ответ

1

Вы пытаетесь собрать средства на местном уровне, где свойство S3_BUCKET_NAME конфигурации на Heroku не имеет никакого эффекта.

Если вы хотите запустить приложение локально (это включает в себя запуск задач Rake), вам необходимо определить эту переменную среды.

Тем не менее, это утверждение не имеет никакого смысла:

When I try to run RAILS_ENV=production bundle exec rake assets:precompile to push assets to heroku,

Там нет оснований вам нужно запустить rake assets:precompile локально «толкать активы» на Heroku. Heroku будет автоматически собирать ваши активы для вас каждый раз, когда вы нажимаете на нее новые коммиты.

+0

Это на самом деле проблема. Когда я нажимаю герою, он извлекает application.js. Поэтому я пытаюсь скомпилировать его локально, поэтому его отталкивают к герою. Я обновлю ошибку с ошибкой журнала. Просто для ваших знаний, я компилировал локально просто отлично, прежде чем я установил S3 – gwalshington

+0

@gwalshington. Вы неправильно определили свою проблему. Компиляция активов локально и отталкивание их к Heroku - неправильный ответ здесь. Heroku не удаляет ваш application.js, он удаляет * старую версию * вашего приложения.js – meagar

+0

Собственно, application.js вообще отсутствует в проекте. Любые мысли о том, почему этого не будет? И чтобы подтвердить, что его нет, я прошу его просто console.log что-то при загрузке страницы, и это не так. – gwalshington

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