2011-08-18 46 views
6

Soy bastante nuevo en los rieles y parece que tengo un problema con la gema del clip. Instalé la gema y funciona bien en desarrollo (localhost: 3000) pero cuando la ejecuto en el servidor heroku, por alguna razón no quiere adjuntar archivos, y la aplicación se rompe (error de 500 páginas).sujetapapeles trabajando en desarrollo pero no trabajando en producción?

Aquí está el proceso que ejecuté ... Introduje mi archivo en heroku, heroku ejecute rake db: migrate (para agregar migraciones de paperclip), y luego ejecuté heroku restart (para reiniciar la aplicación con nuevas migraciones). Esto no pareció ayudar.

Aquí está el código que tengo para un clip:

modelo user.rb: Vista

has_attached_file :avatar, 
        :styles => {:small => "70x70>"}, 
        :url => "https://stackoverflow.com/users/:attachment/:id/:style/:basename.:extension", 
        :path => ":rails_root/public/users/:attachment/:id/:style/:basename.:extension" 
    validates_attachment_size :avatar, :less_than => 500.kilobytes 
    validates_attachment_content_type :avatar, :content_type => ['image/jpeg', 'image/png'] 

edit_form.html.haml:

= form_for (@user || User.new), :html => { :multipart => true } do |f| 
    ...  
    .profile_picture.text_field 
    = image_tag current_profile.avatar.url(:small) 
    %br 
    = f.file_field :avatar 

Una vez más, por alguna razón funciona bien en desarrollo, pero se descompone en producción. Cualquier puntero sería muy apreciado ... Simplemente no puedo entenderlo y es bastante frustrante. ¡Muchas gracias por su tiempo y cualquier ayuda!

Respuesta

3

En su modelo.

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

En s3.yml en su directorio config:

development: 
     bucket: bucketname 
     access_key_id: key 
     secret_access_key: key 

    production: 
     bucket: bucketname 
     access_key_id: key 
     secret_access_key: key 

Entra luego registrarse para un cubo en Amazon S3: http://aws.amazon.com/s3/

+0

muchas gracias por esto ... Definitivamente voy a hacer eso. ¡Gracias! –

1

Puede estar teniendo algunos problemas. Sin embargo, el primero es que no puede escribir en el sistema de archivos en Heroku. Tendrá que implementar un mecanismo de almacenamiento diferente como s3. Puede leer sobre esta limitación aquí: http://devcenter.heroku.com/articles/read-only-filesystem

+0

Muchas gracias por esto, Jake! Realmente lo aprecio ... No sabía que no podría cargarlo a Heroku, pero tiene todo el sentido en retrospectiva. ¡¡Muchas gracias, amigo!! –

Cuestiones relacionadas