неинициализированная константа AWS :: S3 :: Base - PullRequest
3 голосов
/ 04 марта 2012

У меня есть этот код, который находится в папке lib. Этот код работает вне rails, но когда он вызывается из контроллера rails, я получаю неинициализированную константу AWS :: S3 :: Base error

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 ]

1 голос
/ 28 ноября 2012

просто сделай в своем контроллере

require 'aws/s3'

и его работа для меня

0 голосов
/ 21 ноября 2012

Rails не «знает», что модуль доступен для приложения; Вы должны добавить его к путям, по которым он смотрит. Вы можете сделать это несколькими способами, но большинство людей делают следующее.

Добавьте эту строку в ваш config / application.rb:

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

Возможно, в какой-то момент вы захотите конкретнее указать, какие каталоги ищутся, но это должно помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...