AWS :: S3 :: MissingAccessKey в Paperclip, но я определил оба - PullRequest
2 голосов
/ 23 октября 2010

Я работаю в Heroku, и это портфолио, которое я размещаю на github, чтобы потенциальные работодатели могли на него посмотреть, поэтому, очевидно, я не хочу вставлять свои ключи в файл S3.yml. Я экспортировал S3_KEY и S3_SECRET в свою среду на Heroku, и моя машина и ruby ​​могут получить к ним доступ. Но когда я пытаюсь загрузить файл, появляется следующая ошибка:

AWS::S3::MissingAccessKey in Portfolio itemsController#update

You did not provide both required access keys. Please provide the access_key_id and the secret_access_key.

Трассировка не имеет значения, за исключением строки # моего контроллера, которая работает нормально, пока я не попытаюсь загрузить файл. Вот что у меня есть:

class Asset < ActiveRecord::Base
  attr_accessible :image, :image_file_name, :image_content_type, :image_file_size, :portfolio_item_id, :order

  has_attached_file :image,
    :styles => {
      :thumb => "100x100#",
      :small => "300x300",
      :large => "600x600>"
               },
    :storage => :s3,
    :s3_credentials => {
      :access_key_id => ENV["S3_KEY"],
      :secret_access_key => ENV["S3_SECRET"]
                       },
    :bucket => "bucketybucket",
    :path => "portfolio"

end

Кто-нибудь знает, что здесь происходит? Как я неправильно строю этот хэш?

О, и я следил за этой веткой, без кубиков: Скрепка и выпуск Amazon S3

Ответы [ 2 ]

1 голос
/ 12 января 2012

та же проблема ...

похоже, что ENV const не загружается до загрузки модуля. решить с помощью аргумента файла как это

:s3_credentials => Rails.root.join('config/amazon_s3.yml')

и в amazon_s3.yml

access_key_id: 'your_key'
secret_access_key: 'your_sec_key'
bucket: 'somebucket'

Более того, вы можете установить переменную окружения, используя heroku config: add команда, которая описана в Heroku DevCenter

0 голосов
/ 19 марта 2011

Проблема в том, что переменная Enviroment в heroku отличается от переменной окружения в вашей системе, поэтому может случиться, что приложение работает только в одной среде

...