arb*_*les 2 ruby ruby-on-rails amazon-s3 sinatra amazon-web-services
我正在尝试使用aws-s3 gem访问我的Amazon S3帐户,但无论我做什么,我甚至无法打印存储桶列表.
错误:
undefined method `bytesize' for #<AWS::S3::Bucket:0x1b9e488>
Run Code Online (Sandbox Code Playgroud)
来自代码:
# hello_world.rb
require 'rubygems'
require 'sinatra'
require 'aws/s3'
get '/' do
connection = AWS::S3::Base.establish_connection!(
:access_key_id => '***',
:secret_access_key => '***'
)
AWS::S3::Service.buckets
end
Run Code Online (Sandbox Code Playgroud)
我对Ruby没有太多经验,我只是错过了一些明显的东西吗?
问题是你试图输出整组桶,但是没有字符串序列化方法,这就是你得到这个错误的原因.
试试这个:
app.rb
require 'rubygems'
require 'sinatra'
require 'aws/s3'
include AWS::S3
def s3_connect
Base.establish_connection!(
:access_key_id => 'THISISMYACCESSKEYITMAYNOTBETHEBESTBUTITISMINE',
:secret_access_key => 'HERPADERPSECRETKEYISSECRET'
)
end
get '/' do
s3_connect
@buckets = Service.buckets
erb :index
end
get '/bucket/:key' do
s3_connect
@bucket = Bucket.find(params[:key])
erb :bucket
end
Run Code Online (Sandbox Code Playgroud)
查看:index.erb
<h1>Buckets</h1>
<ul>
<% @buckets.each do |b| %>
<li><a href='/bucket/<%= b.name %>'><%= b.name %></a> (<%= b.objects.length %> objects)</li>
<% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)
查看:bucket.erb
<h1>Bucket: <%= @bucket.name %> Objects</h1>
<% @bucket.objects.each do |obj| %>
Object: <%= obj.key %> <%= obj.about['content-length'] %> bytes<br/>
<% end %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2757 次 |
| 最近记录: |