2009-08-28 6 views
3

Я установил плагин скрепки и смог использовать его локально. Когда я настроил его для работы с amazon S3, я все время получаю ошибку NoSuchBucket (указанная ведро не существует). Документация Paperclip гласит, что ведро будет создано, если оно не существует, но, очевидно, что-то пойдет не так в моем случае.Ruby on Rails/Paperclip/AWS :: S3 :: Ошибка NoSuchBucket

Я первый insalled AWS-s3 камень (v0.6.2) затем также установлен right_aws камень (v1.9.0)

и имеют соответствующие

config.gem "aws-s3", :lib => "aws/s3" 
config.gem 'right_aws', :version => '1.9.0' 

строки в файле environment.rb

Код для файла image.rb с помощью скрепки выглядит следующим образом:

class Image < ActiveRecord::Base 

    belongs_to :work 

    has_attached_file :photo, :styles => {:big => "612x1224>", :small => "180X360>", :thumb => "36x36#"}, 
         :storage => 's3', 
         :s3_credentials => YAML.load_file("#{RAILS_ROOT}/config/s3.yml")[RAILS_ENV], 
         :path => ":attachment/:id/:style/:basename.:extension", 
         :bucket => 'my-unique-image-bucket' 

    attr_protected :photo_file_name, :photo_content_type, :photo_size 

    validates_attachment_presence :photo 
    validates_attachment_size :photo, :less_than => 3.megabytes 
    validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png', 'image/gif'] 

end 

ответ

3

Я не совсем уверен, что это так, но ваша загрузка s3_credentials отличается от того, что я использую на своих производственных сайтах.

Моя конфигурация линии:

:s3_credentials => "#{RAILS_ROOT}/config/s3.yml" 

Вместо

:s3_credentials => YAML.load_file("#{RAILS_ROOT}/config/s3.yml")[RAILS_ENV] 
+0

Фактический плагин загружает файл YAML, вы не должны. – Garrett

+0

Пробовал свой способ загрузки файла YAML, он все равно не работает. Вероятно, нет ничего плохого в файле учетных данных, так как он загружается штрафом и дает разные ошибки, когда он не может загружаться, или какие-либо из этих ключей являются неправильными. – fahrio

+0

Вы создали ведро вручную? (Используя S3Fox, Transmit или S3Hub), а затем попытался загрузить? –

0

Я установил плагин S3Fox для Firefox и создали ведро с плагином. Теперь Paperclip отлично работает с S3 по мере того, как идентифицированное ведро уже создано.

Но мне все еще интересно узнать о невозможности создания скрепки с помощью вышеприведенного кода.

+0

Я не знаю, некоторые аспекты использования S3 по-прежнему кажутся мне очень шелушащимися, и часто бывает трудно определить, какая система виновата. Например, структуры «каталога» (ключи с косой чертой в них) часто не работают между клиентскими приложениями, и у меня даже были некоторые проблемы с разрешениями на S3. Тем не менее, это по-прежнему отличная услуга, и я полагаюсь на нее, но вам необходимо тщательно протестировать вашу инструментальную цепочку. –

1

он должен создать, но ведро, но это была ошибка в одной точке:

http://groups.google.com/group/paperclip-plugin/browse_thread/thread/42f148cee71a0477

я недавно имел эту проблему, и оказалось, что время сервера был чрезвычайно выключен и s3 Wouldnt позволяют любому обновления «что далеко в будущем» или аналогичном, но ошибка рельсов была NoSuchBucket ... запутанной

..

0

в случае, если кто вьется здесь через Google: я видел эту же ошибку, когда я по ошибке включены ли или der 2-го и 3-го параметров, которые я проходил до AWS::S3::S3Object.store.

0

Это не ваш случай, но AWS не допускает буквы верхнего регистра в имени ведра и скрепки не проверяет это, не получив create_bucket.