問題タブ [carrierwave]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 搬送波クロッピング
モデルの値 (crop_x、crop_y、crop_w、crop_h) に基づいてトリミングする必要がある元の画像のいくつかのバージョンを作成する CarrierWave ImageUploader があります。
私が抱えている問題は、設定がない場合にデフォルトのクロッピング値を計算する必要があることですが、このロジックをどこに置くべきかわかりません。これを私の Photo モデル (アップローダーがマウントされている) に before_validation で入れてみましたが、これはクロッパー関数が実行された後に呼び出されるようです。ImageUploader ファイル、またはサムが作成される前に発生するコールバックのいずれかである必要があると考えています。
ruby-on-rails-3 - Railsアプリケーションのcarrierwavegem用のGoogleStorageのストレージアクセスクレデンシャル
Rails 3アプリケーションでは、carrierwave gem(バージョン0.5.6)を使用しています。アップロードしたファイルを保存するために、開発者向けのGoogleStorageを使用したいと思います。次のようなイニシャライザーを作成しました。
403の禁止メッセージが表示されます
apis-consoleを使用してGoogleStorageを有効にしました。オンラインの「GoogleStorageManager」を使用してファイルをアップロードできます。上記の初期化ファイルの「google_storage_access_key_id」では、「ストレージアクセス」ページの「あなた」に「GoogleストレージID」を使用しています。「google_storage_secret_access_key」には、「レガシーストレージアクセスキー」を使用しています。
どうすればいいのかわかりません。誰かがこの問題のデバッグを開始する方法を教えてもらえますか?
ありがとう、サクシャム
ruby-on-rails-3 - CarrierWave エラー
次のようなエラーが表示されます。
登録のために送信をクリックした後。Carrierwave を使用しており、手順に従って使用しましたが、まだエラーが発生します。
ruby-on-rails-3 - CarrierWave 画像のサイズ変更が表示されない
アップロードして登録すると、ページいっぱいに画像が出てきます。Carrierwave の指示に従って親指を使用して画像設定を変更しようとすると、新しいページに Thumb_picture_5 というテキストだけが表示されます。そして画像なし。
端末エラーは次のとおりです。
ruby-on-rails-3 - Rails 3.1を使用するときにデフォルトのURLを設定しますか?
新しいアセット パイプラインが CarrierWave のデフォルト メソッドを台無しにしていると思います。デフォルトの画像として使用したいファイルが として保存されていますapp/assets/images/listing_defaults/default.png
。
私のアップローダーには、次のものがあります
アプリを実行すると、そのアドレスで画像が参照可能になります ( localhost:3000/assets/listing_defaults/default.png
)
ただし、何らかの理由で、デフォルトの画像をビューに表示しようとすると、何も表示されません。
それでも、アップロードされたファイルは正常に機能しているようです。何か案は?
ちなみに、default_url を次のように設定しようとしましたが、うまくいきませんでした。
ruby-on-rails-3 - carrierwaveは、ファイルのアップロード時に「スタックレベルが深すぎます」というエラーをスローします
私は奇妙な問題を抱えており、さらにデバッグする方法はありません...
htmlフォームを使用してファイルをアップロードすると、次のようになります。
トレースは次のとおりです。
トレースを分析すると、ファイルがアップロードされ、DBに書き込まれているようです。
しかしその後、エラーがスローされます。
Railsコンソールでのcarrierwaveのテスト:
正常に動作します!
さて、私は別のモデルでファイルをアップロードしているので、carrierwaveのインストールは正常に機能します(同様のアップローダー)。
ファイルを提出せずにhtmlフォームをテストすると、正常に機能します。
それで:
- フォームはファイルフィールドなしで機能します
- carrierwaveファイルのアップロードはコンソールで機能します
- 別のモデル、同様の搬送波アップローダー/構成=>動作します!
どうすればさらにデバッグできますか?
助けてくれてありがとう!
Rails 3.0.7 / ruby-1.9.2-p180 /carrierwave(0.5.3)
編集:それは更新アクションでのみ発生するようです。
コントローラ:
ruby-on-rails - Ruby ブロックの構文エラー
重複の可能性:
Ruby ブロックと括弧で囲まれていない引数
この構文エラーがよくわかりません。Rails アプリでいくつかのファイルのアップロードを管理するために Carrierwave を使用していますが、メソッドの 1 つにブロックを間違って渡しているようです。
Carrierwave Docsの例は次のとおりです。
これが私が持っていたものです:
上記は機能しませんsyntax error, unexpected '}', expecting keyword_end
。興味深いことに、以下は完全に機能します。
ですから、私の質問は、なぜdo...end
この例ではブレースを使用せずにブロックを渡すことができるのでしょうか?
ありがとう!
ruby-on-rails - 複数のファイルのアップロードでフォト アルバムを実行するための Rails サンプル アプリケーションまたはプラグイン/gems はありますか?
複数のファイルのアップロードでフォト アルバムを作成するための Rails サンプル アプリケーションまたはプラグイン/gems があることを知りたいです。複数のファイルをアップロードしてアルバムを作成/編集するなどの基本的な機能を持つことができます。
ruby-on-rails - CarrierWave:すべてのバージョン管理されたファイルに同じ一意のファイル名を作成します
詳細に入る前に、要点を説明します。Carrierwaveに、名前付きのファイルをタイムスタンプまたは各ファイルに固有の任意の文字列として保存させる方法を見つけた人はいますか?
デフォルトでは、Carrierwaveは各ファイルとその代替バージョンを独自のディレクトリ(モデルID番号にちなんで名付けられた)に保存します。私はこれが好きではありません。なぜなら、1,000個のディレクトリの代わりに、大きなラウンド数のファイル(私の場合は写真)を使用するために、それぞれ1つまたは2つのファイルを持つ1,000個のサブディレクトリを持つ1つのディレクトリを取得するからです。うん。
ここで、アップローダーのstore_dir
メソッドをオーバーライドして、次のようにすると、次のようになります。
あなたは私が望む正確な振る舞いになってしまいます。すべてのファイル(写真)は、1つの大きな幸せなフォルダーに入れられます。オブジェクトが削除されたときに固執するサブフォルダーはもうありません。
問題は1つだけです。ファイルの衝突。おいしいケーキの2つの異なる写真であっても、delicious_cake.jpgを2回アップロードすると、2番目の写真が最初の写真を上書きします。これが、メソッドが返す値の最後にstore_dir
余分な要素を追加している理由です。/#{model.id}
じゃあ何をすればいいの?少し読んだ後、生成されたアップローダーファイルにコメントアウトされた明らかな解決策があることを発見しました。
少し検索した後、私は次のことをした人を見つけました
これは私に考えさせました、なぜこれをしないのですか
それは物事がひどく壊れたときです。これに伴う問題filename
は、ファイルのバージョンごとに呼び出されるように見えるため、最終的に1312335603175322.jpgやthumb_1312335603195323.jpgのようなファイル名になることです。わずかな違いに気づきましたか?filename
各ファイル名は、その特定のバージョンに対して呼び出された時刻に基づいています。それはまったくしません。
model.created_at
次に、タイムスタンプの基準として使用するのに疲れました。最初のバージョンはまだデータベースに配置されていないため、最初のバージョンではnilが返されるという問題が1つだけあります。
さらに考えた後、写真コントローラーで次のことを試してみることにしました。
これは、Carrierwaveが取得する前にoriginal_filenameプロパティをオーバーライドして、タイムスタンプにします。それはまさに私が望むことをします。ファイルの元のバージョンは1312332906940106.jpgのような名前になり、サムネイルバージョン(または他のバージョン)はthumb_1312332906940106.jpgのような名前になります。
しかし、これはひどいハックのようです。これはモデルの一部である必要がありますが、モデルにマウントされているアップローダーの一部である必要があります。
だから、私の質問は、これを達成するためのより良い方法はありますか?これを簡単にするCarrierwaveの重要な何かを見逃しましたか?これについてはそれほど明白ではありませんが、よりクリーンな方法はありますか?動作するコードは良いですが、悪臭のない動作するコードの方が優れています。
ruby-on-rails - Carrierwave を使用して Amazon S3 で異なるストレージ パスを使用するように環境を構成する
実稼働データベースを開発環境から明確に保つために、S3 バケットに個別のフォルダーを用意したいと考えています。これを行う方法がわかりません。ここに、carrierwave イニシャライザで思いついたスケルトンを示します。