Heroku上的Rails 3.2.11上的AWS NameError

时间:2015-05-13 20:46:36

标签: ruby-on-rails ruby-on-rails-3 heroku aws-sdk

My Rails 3.2.11应用程序似乎无法在生产中找到下面的AmazonS3类。我可以在类似AmazonS3.create()的rails控制台中调用它,但出于某种原因,当我在PdfGen.create_pdf(在请求期间从Rails控制器调用它)中调用它时,我得到了下面的NameError。

错误我一直

Job PdfGen.create_pdf(id = XX)使用NameError失败(之前5次尝试):未初始化的常量AmazonS3 :: AWS

配置/ 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

1 个答案:

答案 0 :(得分:1)

事实证明,这是宝石本身的一个问题。我补充说:

gem 'aws-sdk-v1'

到Gemfile而不是 aws-sdk 并且它有效。