AWS NameError on Rails 3.2.11 на Heroku

Приложение My Rails 3.2.11 не может найти класс AmazonS3 ниже в производственной среде. Я могу вызвать его в консоли rails с помощью чего-то вроде AmazonS3.create (), но по какой-то причине, когда я вызываю его в PdfGen.create_pdf (который, в свою очередь, вызывается из контроллера Rails во время запроса), я получаю следующее NameError.

Я получаю сообщение об ошибке

Задание PdfGen.create_pdf (id = XX) FAILED (5 предыдущих попыток) с NameError: неинициализированная константа AmazonS3 :: AWS

config / application.rb

  config.autoload_paths += %W(#{config.root}/lib})
  config.autoload_paths += Dir["#{config.root}/lib/**/"]  # include all subdirectories

Gemfile.lock

aws-sdk (1.60.1)
      aws-sdk-v1 (= 1.60.1)
    aws-sdk-v1 (1.60.1)

lib / amazon_s3.rb

class AmazonS3
  def self.signed_url(s3_key)
    s3 = AWS::S3.new(:access_key_id => S3Config.access_key_id, :secret_access_key => S3Config.secret_access_key)
    bucket = s3.buckets[S3Config.bucket]
    bucket.objects[s3_key].url_for(:read, :expires => EXPIRES_IN_YEAR_2036)
  end
end

lib / pdf_gen.rb

class PdfGen
  def self.create_pdf
    ##some code to generate a pdf

    AmazonS3.create(amazon_s3_key, response.body)  #store on S3 bucket
  end
end

person Nona    schedule 13.05.2015    source источник


Ответы (1)


Как выяснилось, проблема заключалась в самом драгоценном камне. Я добавил:

gem 'aws-sdk-v1'

в Gemfile вместо aws-sdk, и это сработало.

person Nona    schedule 13.05.2015