Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未初始化常量AWS::S3::Base_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on 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

我有这个代码在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
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