Скрепка работает в разработке, но не работает в производстве? - PullRequest
6 голосов
/ 18 августа 2011

Я довольно новичок в рельсах и, похоже, у меня проблема с жемчужиной скрепки.Я установил гем, и он хорошо работает в разработке (localhost: 3000), но когда я запускаю его на сервере heroku, по какой-то причине он не хочет прикреплять файлы, и приложение разрывается (страница ошибки 500).

Вот процесс, который я запустил ... Я запихнул свой файл в heroku, heroku запустил rake db: migrate (чтобы добавить миграции скрепок), а затем запустил heroku restart (чтобы перезапустить приложение с новыми миграциями),Это не помогло.

Вот код, который у меня есть для скрепки:

user.rb модель:

  has_attached_file :avatar, 
                    :styles => {:small => "70x70>"},
                    :url  => "/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 view:

  = 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

Опять же, по какой-то причине он отлично работает в разработке, но не работает.Любые указатели будут с благодарностью ... Я просто не могу понять это, и это довольно расстраивает.Большое спасибо за ваше время и любую помощь!

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

В вашей модели.

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

В s3.yml в вашей конфигурации dir:

    development:
      bucket: bucketname
      access_key_id: key
      secret_access_key: key

    production:
      bucket: bucketname
      access_key_id: key
      secret_access_key: key

Затем зарегистрируйтесь на Amazon S3: http://aws.amazon.com/s3/

1 голос
/ 18 августа 2011

У вас могут быть некоторые проблемы.Тем не менее, первое, что вы не можете записать в файловую систему на Heroku.Вам нужно будет реализовать другой механизм хранения, такой как s3.Вы можете прочитать об этом ограничении здесь: http://devcenter.heroku.com/articles/read-only-filesystem

...