Bezpośrednie przesyłanie do S3 za pomocą Carrierwave

Niedawno przekonwertowałem poniższy tekst za pomocą Paperclip na Carrierwave, przesyłając go do Amazon S3, dzięki czemu mogę skorzystać z gemu carrierwave_direct, a następnie Sidekiq lub innego klejnotu do przetwarzania w tle.

class Release < ActiveRecord::Base
  has_many :releases_tracks, :dependent => :destroy
  has_many :tracks, :through => :releases_tracks, :order => "releases_tracks.position DESC"
  accepts_nested_attributes_for :tracks, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => :true
  accepts_nested_attributes_for :releases_tracks  
end

class Track < ActiveRecord::Base
  mount_uploader :track, TrackUploader
  has_many :releases_tracks, :dependent => :destroy
  has_many :releases, :through => :releases_tracks 
end

/views/releases/track_upload.html.erb

<%= form_for(@release, :html => { :multipart => true }) do |f| %>
<h3>Upload Tracks for <%= @release.title %></h3>
    <% index = 0 %>
    <%= f.fields_for :tracks do |builder| %>
    <%= @release.tracks[index].name %>
        <%= f.file_field :track, :class => "file styled", :title => 'Select Track'%>
    <% index += 1 %>
    <% end %>

    <%= f.submit "Upload Tracks", :class => "submit" %>
<% end %>

Przesyłanie nośników Carrierwave działa, ale nie wiem, jak uzyskać bezpośrednią pracę części. Częściowo dlatego, że nie wiem, jak włączyć sugerowany kod formularza:

<%= direct_upload_form_for @uploader do |f| %>
  <%= f.file_field :track %>
  <%= f.submit %>
<% end %

Albo gdzie w moim utworze OR kontroler zwolnienia umieściłem sugerowane:

@uploader = User.new.track
@uploader.success_action_redirect = new_user_url

Readmehttps://github.com/dwilkie/carrierwave_direct i Railscasthttp://railscasts.com/episodes/383-uploading-to-amazon-s3 wskazują najpierw na załadowanie pliku, a następnie utworzenie wpisu do bazy danych. W mojej aplikacji wpisy db już istnieją. Railscast mówi, że jest to możliwe, ale nie przechodzi przez to. Więc to jest pierwszy problem.

Po drugie, muszę przesyłać więcej niż jeden plik naraz. Powyższy kod to osiąga, ale bardzo powoli i oczywiście czyni moją aplikację całkiem bezużyteczną.

Czy ktoś może pomóc? Ogromne dzięki z góry!

questionAnswers(1)

yourAnswerToTheQuestion