0

我是RoR的新手。我正在使用Rails 5和aws-sdk gem。訪問一個桶aws-sdk Rails 5

這是我正在嘗試構建的第二個webapp,如果你在我的代碼中發現一個大胡說,那麼我就沒有這個意義了......我正在關注2011年製作的教程,因此它使用gem aws/S3。我掙扎在使用AWS-SDK明確方向相關,所以這裏是我的問題:

我試圖訪問一個桶和我一直運行到錯誤:

undefined method `find' for Aws::S3::Bucket:Class 

關於:

@songs = Aws::S3::Bucket.find(Musicapp::Application::S3_BUCKET).objects 

CONFIG> application.rb中

require 'aws-sdk' 

module Musicapp 
    class Application < Rails::Application 
    Aws.config.update({ 
     region: 'eu-central-1', 
     credentials: Aws::Credentials.new('abc', 'xyz') 
    }) 
    s3 = Aws::S3::Resource.new(region: 'eu-central-1') 
    S3_BUCKET = s3.bucket(ENV['S3_BUCKET']) 
    end 
end 

CONFIG> APPLICATION.YML

development: 
    AWS_ACCESS_KEY_ID: 'abc' 
    AWS_SECRET_ACCESS_KEY: 'xyz' 
    S3_BUCKET: 'mp3playlist' 

控制器> SONGS_CONTROLLER.RB

class SongsController < ApplicationController 
    def index 
    @songs = Aws::S3::Bucket.find(Musicapp::Application::S3_BUCKET).objects 
    end 

的Gemfile

gem 'aws-sdk' 

回答

0

看起來好像Musicapp ::應用:: S3_BUCKET本身是一個鬥對象,所以你應該能夠將#objects發送給它。

@songs = Musicapp::Application::S3_BUCKET.objects 
+0

感謝大衛的回答,但是這提高另一個錯誤: 未定義的方法'對象的零:NilClass你是什麼意思? OBJECT_ID – catch22