Ruby 如何使用Sinatra、Datamapper、DM回形针和S3?
更新:我已经切换到CarrierWave(终于让它工作了),所以尽管我仍然很欣赏这个问题的答案,但我无法尝试它们是否真的工作,因为我已经从代码中完全删除了DM曲别针Ruby 如何使用Sinatra、Datamapper、DM回形针和S3?,ruby,amazon-s3,paperclip,sinatra,datamapper,Ruby,Amazon S3,Paperclip,Sinatra,Datamapper,更新:我已经切换到CarrierWave(终于让它工作了),所以尽管我仍然很欣赏这个问题的答案,但我无法尝试它们是否真的工作,因为我已经从代码中完全删除了DM曲别针 你好 我正在使用DataMapper开发一个Sinatra Web应用程序,现在正在考虑使用S3作为存储添加一些上传功能。我已经试过了,但我没法让它起作用,所以现在我在试dm回形针。这就是我现在拥有的: 型号: class Article include DataMapper::Resource include Paper
你好 我正在使用DataMapper开发一个Sinatra Web应用程序,现在正在考虑使用S3作为存储添加一些上传功能。我已经试过了,但我没法让它起作用,所以现在我在试dm回形针。这就是我现在拥有的: 型号:
class Article
include DataMapper::Resource
include Paperclip::Resource
property :id, Serial
property :created_at, DateTime
property :updated_at, DateTime
property :title, String
property :body, Text
has_attached_file :screenshot,
:storage => :s3,
:s3_credentials => {
:access_key_id => 'my-access-key-id',
:secret_access_key => 'my-secret_access-key',
:bucket => 'my-bucket'
},
:styles => {
:medium => "300x300>",
:thumb => "100x100>"
}
end
控制器:
post '/articles/create' do
@article = Article.new
@article.title = params[:title]
@article.body = params[:body]
@article.screenshot = params[:screenshot]
begin
@article.save
rescue DataMapper::SaveFailureError => e
puts "Error saving article: #{e.to_s} validation: #{@article.errors.values.join(', ')}"
rescue StandardError => e
puts "Got an error trying to save the article #{e.to_s}"
end
redirect '/articles'
end
然而,当我创建一篇新文章时,它不会将任何内容保存到我的S3存储桶中,我也不会得到任何错误
知道我做错了什么吗?嘿!请试试我的叉子:它包括许多修补程序,修复了S3的一些问题。一两个月内,我将发布它。除了已经发布的解决方案之外,我想添加一个推荐 根据我的经验,使用DataMapper的
raise\u on\u save\u failure
功能对调试选项没有多大帮助。我建议您禁用该功能并使用以下代码:
if model.save then
return model
else
error = String.new
model.errors.each do |e|
error << "#{e[0]}\n"
end
raise ArgumentError, error
end
如果model.save则
回归模型
其他的
error=String.new
model.errors.each do|e|
错误前一段时间,我专门为S3设计了叉子。我的fork使用的是官方的AWS-SDK,而不是过时的旧AWS-s3
如果有人要为回形针搜索S3解决方案,这是一个有效的解决方案(今天)
看看自述文件,了解如何为S3配置回形针抛出一个错误:“未初始化的常量ActiveSupport::拐点”(我没有使用ActiveSupport)