-1

paperclip-dropbox gem hereを使用しようとしていますが、セットアップと認証情報の受け渡しに問題があります。

ドキュメントでは、モデルのセットアップは次のように行われます。

class User < ActiveRecord::Base
  has_attached_file :avatar,
   :storage => :dropbox,
   :dropbox_credentials => "#{Rails.root}/config/dropbox.yml",
   :dropbox_options => {...}
end

dropbox.yml ファイルを構成して /config フォルダーに配置しましたが、Rails からファイルまたはディレクトリが存在しないと表示されます。

環境変数を使用してハッシュで資格情報を渡すと、

:dropbox_credentials => {
                  app_key: ENV["DROPBOX_APP_KEY"],
                  app_secret: ENV["DROPBOX_APP_SECRET"],
                  access_token: ENV["DROPBOX_ACCESS_TOKEN"],
                  access_token_secret: ENV["DROPBOX_ACCESS_TOKEN_SECRET"],
                  user_id: ENV["DROPBOX_USER_ID"]
                }
:dropbox_options => {
                  :path => ":attachment/:id/:basename.:extension"
                }

スタック トレースの先頭は次のとおりです。

paperclip-dropbox (1.0.0) lib/paperclip/storage/dropbox.rb:59:in `path_for_url'
paperclip-dropbox (1.0.0) lib/paperclip/storage/dropbox.rb:55:in `path'
paperclip-dropbox (1.0.0) lib/paperclip/storage/dropbox.rb:41:in `exists?'
paperclip (3.2.0) lib/paperclip/attachment.rb:436:in `block in queue_all_for_delete'
paperclip (3.2.0) lib/paperclip/attachment.rb:435:in `map'
paperclip (3.2.0) lib/paperclip/attachment.rb:435:in `queue_all_for_delete'
paperclip (3.2.0) lib/paperclip/attachment.rb:213:in `clear'
paperclip (3.2.0) lib/paperclip/attachment.rb:94:in `assign'
paperclip (3.2.0) lib/paperclip.rb:196:in `block in has_attached_file'
activerecord (3.2.6) lib/active_record/attribute_assignment.rb:85:in `block in       assign_attributes'
activerecord (3.2.6) lib/active_record/attribute_assignment.rb:78:in `each'
activerecord (3.2.6) lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
activerecord (3.2.6) lib/active_record/persistence.rb:212:in `block in   update_attributes'
activerecord (3.2.6) lib/active_record/transactions.rb:295:in `block in   with_transaction_returning_status'
activerecord (3.2.6)  lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
activerecord (3.2.6) lib/active_record/transactions.rb:208:in `transaction'
activerecord (3.2.6) lib/active_record/transactions.rb:293:in  `with_transaction_returning_status'
activerecord (3.2.6) lib/active_record/persistence.rb:211:in `update_attributes'
app/controllers/users_controller.rb:45:in `update'

次に、レールは「間違った引数タイプの文字列がProcに期待されています」と言います

私はRubyが初めてで、procsをよく理解していません。これを修正して機能させるにはどうすればよいですか?

4

1 に答える 1

2

readme によると、paperclip-dropbox はパスの proc を想定しています。あなたのパスの:avatarパラメータは何かを意味していますか、それとも静的部分であることを意味していますか?

次のようなことを試す必要があると思います。

:path => proc { |style| "avatars/#{id}/#{style}/#{avatar.original_filename}" }

変数なしで試すこともでき|style|ますが、引数の数が間違っているというエラーが発生する可能性があります。通常、追加のスタイルを定義して、サイトで必要なサイズに画像を自動的にスケーリングします。詳細については、ドキュメントを参照してください。

于 2012-10-26T20:53:37.960 に答える