3

İlk olarak, Rails ve Stack Overflow için çok yeniyim ve şu anda öğrenme eğrisine doğru yolumu çalıyordum, bu yüzden yazım laubali olarak noobish ise özür dilerim. İşte benim sorunum:El ile yüklenen Amazon s3'ten Rails (resim/metin) dosyalarını nasıl okurum?

Tüm resimler ve metin gibi kaynakları depolamak için Amazon s3 kullanarak sıfırdan bir blog oluşturmaya çalışıyorum. Kullanıcıların siteye içerik yüklemesine hiç ihtiyacım yok, bu yüzden konsol.aws.amazon.com adresindeki konsollarını kullanarak her şeyi manuel olarak yükleyebileceğimi düşündüm. Rails'i s3 grubumdaki klasörleri okumak için kodlamaya çalışıyorum ve ardından görüntüleri/metni veritabanındaki doğru noktalara yönlendirin. Örneğin, s3'te "Post1" adlı bir klasör oluşturabilirim, sonra Rails uygulaması bu klasördeki her şeyin URL'sini okur ve veritabanında post1'e yönlendirir, sonra sadece resim URL'sini veya metnini çağırabilirim. görünüşte ve teorik olarak onu gösterir. Sorum şu: S3 klasörlerini okumak için uygulamamı nasıl alabilirim?

Biliyorum, buradaki tekerleği yeniden icat ediyorum, ama amacım da Rayları öğrenmektir. Herkese şimdiden teşekkürler. GitHub'da my project bulabilirsiniz.

Blogum modeli: Benim kodunda boşluklar aslında s3 konuşmak şey gibi ... vardır eminim

class BlogController < ApplicationController 
    before_action :load_posts 


     def index #this method puts all the stuff pulled from 'load_posts' and packages it nicely in a instanced variable 
    @blogPosts = BlogPost.all 
    end 

    def load_posts #this method should pull posts from AWS s3 and add them to the database (like magic) 

    end 

end 

:

class BlogPost < ActiveRecord::Base 
    has_attached_file :download, 
        :storage => :s3, 
        :s3_credentials => Proc.new{|a| a.instance.s3_credentials } 

    def s3_credentials 
    {:bucket => "S3_BUCKET_NAME", :access_key_id => "AWS_ACCESS_KEY_ID", :secret_access_key => "AWS_SECRET_ACCESS_KEY"} 
    end 

end 

İşte benim blog kontrol cihazıdır. Yapmak istediklerimin büyük kısmının muhtemelen benim modelimde olduğunu biliyorum. Gerçekten sıkışmış hissediyorum. Umarım s3.file.read veya bir şey gibi kullanabileceğim basit, sihirli bir Ruby yöntemi vardır. Diğer bir seçenek, bir kullanıcı olduğum gibi, her şeyi bir arada veritabanına bağlayan ve sonra s3'e yükleyen bir form oluşturmaktı. Yine de, insanları dinozların zaman aşımına uğraması gibi, büyük dosyaları (büyük resimler gibi), heroku ve s3'e yüklemeye çalıştıklarında okudum. Doğrudan s3'e nasıl yükleneceğiyle ilgili eğitim yazıları okudum, ancak bu işlemi atlayabilir ve s3 konsolundaki 'yükle' düğmesini tıklayabilirim. Her şey yardımcı olacaktır. Hepinize tekrar teşekkürler.

cevap

1

Eğer aws-sdk'yi kullanıyorsunuz, iyi, s3.file.read eşdeğeriyle o zaman vuracağım: Aws::S3::Object#get.

# create your bucket first 
s3_file = bucket.object['myfile.txt'].get({response_target: '/tmp/myfile.txt'}) 

Sanırım s3_file.body'u yapabilirsiniz. Son olarak, tekerleği yeniden icat ediyorsunuz ve carrierwave with aws-sdk numaralı ürüne göz atmanız gerekiyor. Son olarak, carrierwave with aws-sdk numaralı telefonu kontrol edin.

+0

Bence bu tam olarak aradığım şey. Çok teşekkürler! Kafamı çarptığında ve çalışmasını sağladığımda veya daha fazla soruma sahip olduğumda bir takip ile yorum yapacağım. :) –

+0

Bitirdiğinizde cevabı kabul etmeyi unutmayın. –

+1

's3.bucket'i () .object ("test/my_data.json")' u denedim. ({Response_target: '/tmp/data.json'}). Body' ve tüm cevap verdiği # # Seahorse :: Müşteri :: ManagedFile: /tmp/data.json (kapalı)> '... herhangi bir fikir? – Mirror318

İlgili konular