ruby - 如何使用 Sinatra、Datamapper、DM-Paperclip 和 S3?

标签 ruby amazon-s3 paperclip sinatra datamapper

更新:我已经切换到 CarrierWave(终于让它工作了),所以尽管我仍然很欣赏这个问题的答案,但如果它们真的有效,我将无法尝试因为我已经从我的代码中完全删除了 DM-Paperclip


你好,

我正在使用 DataMapper 开发 Sinatra-webapp,现在希望添加一些使用 S3 作为存储的上传功能。我试过了 CarrierWave ,但我无法让它工作,所以现在我正在尝试 dm-paperclip。这是我现在拥有的:

型号:

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

Controller :

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 存储桶中,我也没有收到任何错误。

知道我做错了什么吗?

最佳答案

嘿!请试试我的 fork :https://github.com/solnic/dm-paperclip它包含许多补丁,这些补丁修复了 S3 的一些问题。我将在一两个月内发布它。

关于ruby - 如何使用 Sinatra、Datamapper、DM-Paperclip 和 S3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285085/

相关文章:

ruby-on-rails - 将 url 从回形针返回到 json

ruby-on-rails - 用于亚马逊 S3 的 AutoSmusher 优化图像?

ruby-on-rails - 仅在回形针为图片时才使用样式[rails]

mysql - sinatra +Datamapper + mysql

ruby - 使用 .any 方法迭代数组组合方法

ruby - CentOS 上的 rbenv : make: *** [exts. mk] 在配置 openssl 后被杀死

ruby-on-rails - 冒号前缀和附加之间的区别(:item vs item:)

ruby-on-rails - rails Carrierwave 和 s3 : wrong number of arguments (2 for 1)

ssl - 如何使用 S3 存储桶的 Akamai infront?

amazon-web-services - 亚马逊 Redshift : Insert data into table from S3 using Java API