我的这个代码位于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
答案 0 :(得分:1)
只需在您的控制器中执行
require 'aws/s3'
及其为我工作
答案 1 :(得分:0)
Rails不“知道”该模块可供应用程序使用;你必须将它添加到它所查看的路径中。你可以通过几种方式实现这一点,但大多数人都会这样做。
将此行添加到config / application.rb:
config.autoload_paths += Dir["#{config.root}/lib/**/"]
在某些时候,您可能希望更具体地了解搜索哪些目录,但这应该可以帮助您。