2012-06-07 4 views
1

Эта проблема разрешена. Оказывается, я потратил слишком много времени на изучение проблемы, так как это показалось обычным явлением, и недостаточно времени, чтобы проверить, что мой секретный ключ доступа был скопирован/вставлен правильно в моем локальном env.AWS :: S3 :: Ошибки :: ПодписьDoesNotMatch с помощью Paperclip и Amazon S3 в локальном dev

Я прочитал около 20 вопросов об этом, и до сих пор никто мне не помог. Я продолжаю получать исключение SignatureDoesNotMatch в моем контроллере создания, и я не могу понять, почему.

Моего класса (с незначительным переименованием в «S3», так как проект не выйдут):

class S3File < ActiveRecord::Base 
    has_attached_file :s3_attachment, 
    storage: :s3, 
    bucket: ENV['S3_BUCKET_NAME'], 
    s3_credentials: { 
     access_key_id: ENV['AWS_ACCESS_KEY_ID'], 
     secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'] 
    }, 
    path: ':id/temp.jpg' 
end 

Я определяю переменную ENV в файл .env и запустить свой сервер с бригадиром, и я проверил что эти значения верны в «консоль-пулемет запуска».

Это никогда не работает для меня, но до сих пор я пытался несколько путей, я установил ImageMagick, и включал в себя следующие камни:

# rails -v Rails 3.2.2 
# ruby -v Ruby 1.9.2p290 
gem 'paperclip' # paperclip (3.0.4) in Gemfile.lock 
gem 'aws-s3' # aws-s3 (0.6.3) in Gemfile.lock 
gem 'aws-sdk' # aws-sdk (1.5.2) in Gemfile.lock 
gem 'rmagick' # rmagick (2.13.1) in Gemfile.lock 

И, наконец, мой _form частичный вид:

<%= form_for @s3_file do |f| %> 
    <div class="field"> 
    <%= f.file_field :email_attachment %>  
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Я предоставлю дополнительную информацию всем, кто в ней нуждается, но на данный момент я в тупике. Спасибо всем, кто может помочь вообще.

ответ

0

Я видел людей, пытающихся использовать aws-s3 и aws-sdk вместе, но это будет cause conflicts, потому что они оба используют одно и то же пространство имен модулей. Я не говорю, что это обязательно ваша проблема, но это определенно не помогает. Для этого требуется aws-sdk, поэтому я бы удалил aws-s3 из вашего Gemfile, чтобы начать. Если вы по-прежнему получаете ошибки, я бы рекомендовал добавить отладчик прямо над линией has_attached_file и проверить переменные ENV, чтобы убедиться, что они действительно установлены.

+0

Спасибо, я попробую. https://devcenter.heroku.com/articles/s3, похоже, предлагает использовать aws-s3 с paperclip, а затем я получаю ошибки о необходимости aws-sdk. – joncalhoun

+0

На самом деле это зависит от того, какую версию Paperclip вы используете. Недавно они изменили его с aws-s3 на aws-sdk, поэтому вам придется использовать Gem на основе той версии, которую вы используете. Не знаю, когда они сделали переключатель, но если вы используете последнюю версию, тогда aws-sdk - это путь. –

+0

Это не было основной причиной проблемы, но это позволило мне удалить драгоценный камень, который мне действительно не нужен, и, возможно, предотвратить будущие проблемы, так что спасибо. – joncalhoun

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