未初始化的常量AWS :: S3 :: Base

时间:2012-03-04 03:09:11

标签: ruby-on-rails ruby

我的这个代码位于lib文件夹中。此代码在rails之外工作,但是当它从rails控制器调用时,我得到未初始化的常量AWS :: S3 :: Base错误

require 'rubygems'
require 'aws/s3'

module S3Util

  def self.upload_file(local_file)
    mime_type = "application/octet-stream"
    bucket = "test"

    AWS::S3::Base.establish_connection!(
      :access_key_id     => '*****',
      :secret_access_key => '****'
    )

    base_name = File.basename(local_file)

    puts "**** Uploading #{local_file} as '#{base_name}' to '#{bucket}'"

    AWS::S3::S3Object.store(
      base_name,
      File.open(local_file),
      bucket,
      :content_type => mime_type
    )

    puts "***** Uploaded!"

  end
end

2 个答案:

答案 0 :(得分:1)

只需在您的控制器中执行

require 'aws/s3'

及其为我工作

答案 1 :(得分:0)

Rails不“知道”该模块可供应用程序使用;你必须将它添加到它所查看的路径中。你可以通过几种方式实现这一点,但大多数人都会这样做。

将此行添加到config / application.rb:

config.autoload_paths += Dir["#{config.root}/lib/**/"]

在某些时候,您可能希望更具体地了解搜索哪些目录,但这应该可以帮助您。