2011-07-23 9 views
1

私は小さなローカルグループの画像が100より大きい小さなウェブサイトを構築しています。私のローカルマシン上のクリップでs3にファイルをアップロードすると、正常に動作しますが、私がherokuにプッシュすると、それらの写真が壊れてしまいます(間違った場所を指す)。Paperclip + heroku + s3を使用しています...ライブをプッシュするとローカルアップロードが中断されました

ライブデータベースをherokuから取得した場合(オンラインのアプリに写真をアップロードする場合は、オンラインデータベースを取得します)。これらの画像はローカルのアプリケーションに読み込まれません。

これを行うにはどのようなアイデアがありますか?

EDIT: 問題のいくつかのより多くの明確化:私は今、とても

:path => "/public/system/:attachment/:style/:id.:extension" 

のようにモデル内のパスを設定して、それが今、S3にアクセスする際にURLがどのように見えるかを制御します。しかし、私のローカルマシン出力はこのイメージソースとして:ローカル1は、ディレクトリ構造を注入除いあなたは、これは非常に似て見ることができるように

bucket/app/public/system/pictures/7/thumb/overlook.jpg?2011 

bucket/Users/msencenb/Development/appname/public/system/pictures/7/thumb/overlook.jpg?2011 

Herokuのアプリのソースは次のようになりながら、ソースパスにも同様に挿入します。クリップでソースパスをどのようにすることができますか?

+0

生産環境と開発環境で同じS3バケットを使用していますか? –

+0

同じバケット – Msencenb

+0

は、ペーパークリップ設定で使用しているモデルを示しています。 –

答えて

2

は、このブログ記事を参照してください。

http://codeglot.com/posts/68-upoading_pictures_to_apps_on_heroku

私はクリップとS3を使用する複数のアプリケーションを持っていました。

has_attached_file :picture, 
        :styles => {:large => "275x450>"}, 
        :storage => :s3, 
        :s3_credentials => "#{RAILS_ROOT}/config/s3.yml", 
        :path => "appname/:attachment/:style/:id.:extension" 

は、アプリの名前であなたのappnameを置き換えることを確認してください:これは私がそれのセットアップ持っているかです。あなたが英雄のあなたのアプリにアクセスできるサブドメインのようなものです。

+0

完璧に作業しました。注意:gitプロジェクトにs3.ymlを追加する前に慎重を期してください。 s3資格情報を保護する方法を検討してください。 – mikeborgh

+0

.gitignoreに追加してください – s84

0

ローカルマシンで作業すると、ファイルはローカルデータベースのIDを使用してS3にアップロードされ、herokuにプッシュすると、リモートデータベースをローカルコンテンツで更新しないと、参照は壊れる。

+0

これは右の線に沿っています。しかし、タップを使ってヒロクに私のローカルデータベースをプッシュしても、イメージはまだ破損しています。今は私が望んでいないものをすべてアップロードし直さなければならない – Msencenb

0

パスの先頭にあるスラッシュを取り出してみてください。

:path => "public/system/:attachment/:style/:id.:extension" 

アプリパス(HerokuのローカルとアプリではUsers/msencenb/Development/appname)を使用しないでください。何かがそれを引き起こしていますし、スラッシュを取っていない場合は、それを引き起こしているものを調査してみてください。

+0

'/ public/system'を使うのは問題ではないでしょう、私は' appname /:attachment /:style /:id。:extension'をs3 heroku app – Nilloc

関連する問題