Ruby on rails 未初始化常量AWS::S3::Base
我有这个代码在lib文件夹中。这段代码在rails之外工作,但是当从rails控制器调用它时,我得到了未初始化的常量AWS::S3::Base错误Ruby on rails 未初始化常量AWS::S3::Base,ruby-on-rails,ruby,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.establi
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
Rails不“知道”应用程序是否可以使用该模块;您必须将其添加到其查找的路径中。你可以通过两种方式做到这一点,但大多数人都会做到以下几点
将此行添加到config/application.rb:
config.autoload_paths += Dir["#{config.root}/lib/**/"]
在某些情况下,您可能希望更具体地搜索哪些目录,但这应该可以让您继续操作。只需在控制器中执行即可
require 'aws/s3'
它对我来说很有用。AWS::S3::Base有帮助吗?你把Gem添加到你的Gem文件了吗?请在Gemfilegem'aws-s3'中发布该行:require=>aws/s3'gem'aws-sdk'您使用aws-s3和aws-sdk有任何特殊原因吗?它们不提供相同的功能吗?为什么第三个require为空?请尝试在S3Util模块中要求使用“aws/s3”。这个aws-s3 gem总是存在这样的名称空间问题。也可以像@emagingly proposed::AWS::S3::Base那样称呼它。我做了与您要求做的相同的事情,但面临相同的错误:未初始化常量AWS::S3::Base