„Brakujące: opcja wiadra” dla Paperclip / S3

W mojej aplikacji Rails pozwalam użytkownikom przesyłać obraz podczas tworzenia „wydania” i powinien on przesyłać bezpośrednio do S3. Dostaję następujący błąd zarówno w rozwoju, jak i produkcji.

EDYTOWAĆ: Powinienem zauważyć, że ten błąd występuje podczas próby przesłania ze strony edycji wydania w formularzu przesyłania.

ArgumentError in ReleasesController#update

missing required :bucket option
Rails.root: /Users/jasondemeuse/pressed

Zrobiłem to już wcześniej bez żadnych problemów z użyciem Carrierwave, ale nie wiem, co robię źle teraz, gdy używam Spinacza. Wszystkie poprawki, które widziałem na SO i gdzie indziej, są problemami z Heroku, ale mam ten sam problem z rozwojem i żadna z poprawek nie pomogła.

Oto odpowiedni kod („...” oznacza nieistotne fragmenty):

development.rb

Appname::Application.configure do

...

  config.paperclip_defaults = {
    :storage => :s3,
    :s3_protocol => 'http',
    :s3_credentials => {
      :bucket => ENV['AWS_BUCKET'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
  }
end

production.rb

Appname::Application.configure do

...

  config.paperclip_defaults = {
    :storage => :s3,
    :s3_protocol => 'http',
    :s3_credentials => {
      :bucket => ENV['AWS_BUCKET'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
  }
end

release.rb

class Release < ActiveRecord::Base
  attr_accessible ... :banner


  belongs_to :user


  has_attached_file :banner, styles: {
    thumb: '100x100>',
    square: '200x200#',
    medium: '300x300>',
    spread: '1200x200'
  }

  has_many :banners, :dependent => :destroy
  accepts_nested_attributes_for :banners, :allow_destroy => true


end

show.html.erb

<%= image_tag @release.banner.url(:medium) %>
<%= @release.banner.url %>

// Have both of these in for now to see if they work, but since the upload isn't working it's giving me the missing.png

_form.html.erb

<%= f.label "Add A Banner?" %><br />
<%= f.file_field :banner %>

konfiguracja heroku (ma taką samą wartość w .bash_profile dla rozwoju)

AWS_ACCESS_KEY_ID:            XXXXXXXXXXXXXXXX
AWS_BUCKET:                   appname
AWS_SECRET_ACCESS_KEY:        XXXXXXXXXXXXXXXXXXXXXXXXXXX

EDYTOWAĆ: Oto moja odpowiednia część mojego kontrolera

  def update
    @release = Release.find(params[:id])


    respond_to do |format|
      if @release.update_attributes(params[:release])
        format.html { redirect_to [@user,@release], notice: 'Release was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @release.errors, status: :unprocessable_entity }
      end
    end
  end

Wiem, że to powinno być niezwykle proste i jestem pewien, że po prostu zapomniałem czegoś oczywistego, ale przechodziłemten przewodnik jak również poprawki, które znalazłem i nic nie działa. Czy jest jakieś zadanie lub pakiet prowizji, którego zapomniałem uruchomić?

Z góry dziękuję!

EDYCJA 2: Poniższe odpowiedzi bardzo mi pomogły i przestawiły się nafog gem naprawił większość rzeczy dla mnie. Na wypadek, gdyby inni mieli te same problemy, miałem też inny problem, który sprawiał, że ten problem był dla mnie mylący. Jeśli masz problemy z Heroku iPaperclip::PaperclipError (Item model missing required attr_accessor for 'image_file_name'):, upewnij się, że uciekaszheroku rake db:migrate następnie uruchom ponownie Herokuheroku restart. Załadowałem mój schemat i błędnie założyłem, że nie muszę tego robić.

Odpowiedź SO z powyższymmożna znaleźć tutaj.

questionAnswers(3)

yourAnswerToTheQuestion