Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用Sinatra、Datamapper、DM回形针和S3?_Ruby_Amazon S3_Paperclip_Sinatra_Datamapper - Fatal编程技术网

Ruby 如何使用Sinatra、Datamapper、DM回形针和S3?

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

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


你好

我正在使用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)