NameError (başlatılmamış sabit Paperclip :: Storage :: S3 :: AWS):


91

Görüntüleri web uygulamama dahil etmeye çalışıyorum ve epeyce özelliği kaldırdıktan sonra bu hatayla karşılaşmaya devam ediyorum. Uygulama denetleyicime geldi ve buradan nereye gitmem gerektiğinden tam olarak emin değilim.

2015-02-06T20:30:12.292187+00:00 app[web.1]:    (1.9ms)  ROLLBACK
2015-02-06T20:30:12.296299+00:00 app[web.1]: NameError (uninitialized constant Paperclip::Storage::S3::AWS):
2015-02-06T20:30:12.296301+00:00 app[web.1]:   app/controllers/articles_controller.rb:24:in `create'
2015-02-06T20:45:14.691084+00:00 app[web.1]: [paperclip] saving /articles/images/000/000/013/original/git.jpeg
2015-02-06T20:45:14.698744+00:00 app[web.1]: Completed 500 Internal Server Error in 584ms
2015-02-06T20:45:14.700871+00:00 heroku[router]: at=info method=POST path="/articles" host=preston.herokuapp.com request_id=d9d02257-3616-4686-bce5-3d912cd528c2 fwd="76.22.102.38" dyno=web.1 connect=1ms service=698ms status=500 bytes=1754

Article_controller.rb

class ArticlesController < ApplicationController
http_basic_authenticate_with name: "name", password: "password", except: [:index, :show]

    def index
        @articles = Article.all.order("created_at DESC")
    end

    def show
        @article = Article.find(params[:id])
    end

    def new
        @article = Article.new
    end 

    def edit
        @article = Article.find(params[:id])

    end

    def create
        @article = Article.new(article_params)

        if @article.save
          redirect_to @article
        else
            render 'new'
        end  
    end

    def update
        @article = Article.find(params[:id])

        if @article.update(article_params)
            redirect_to @article
        else
            render 'edit'
        end
    end

    def destroy
        @article = Article.find(params[:id])
        @article.destroy

        redirect_to articles_path
    end

    private

    def article_params
        params.require(:article).permit(:title, :text, :image)
    end
end

Gemfile

source 'https://rubygems.org'
ruby '2.0.0'

gem 'rails', '4.2.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'bootstrap-sass', '~> 3.3.3' 
gem 'autoprefixer-rails'
gem 'paperclip', '~> 4.2.1'
gem 'aws-sdk', '~> 2.0.22'

group :development, :test do
 gem 'byebug'
 gem 'web-console', '~> 2.0'
 gem 'spring'
 gem 'sqlite3'
end

group :production do
    gem 'pg'
    gem 'rails_12factor'
end

group :doc do
    gem 'sdoc', '~> 0.4.0', require: false
end

Heroku'ya mı gönderiyorsunuz?
Ahmad Al-kheat

Evet, zaten var ve heroku günlüklerine bakıyorum ve bu hatayı buldum.
EggSix

3
set AWS_SECRET_ACCESS_KEY = your_secret_access_key: set S3_BUCKET_NAME = your_bucket_name $ Heroku yapılandırma: set AWS_ACCESS_KEY_ID = your_access_key_id $ Heroku yapılandırma Eğer Heroku içinde AWS sabitleri başlatılamıyor çünkü büyük olasılıkla, sen $ Heroku yapılandırma çalıştırmanız gerekir
Ahmet el-kheat

hmmm O adımı takip ettim ama doğru olduğundan emin olmak için her şeye yeniden başlayacağım
EggSix

Tamam, işe yarayıp yaramadığını bana bildirin, böylece onu diğer insanların da yararlanabileceği bir cevap haline getirebilirim.
Ahmad Al-kheat

Yanıtlar:


179

2.0'dan önceki bir sürümü yüklemek için Gemfile'ınızın aws-sdk'sini değiştirin:

gem 'aws-sdk', '< 2.0'

Bu sorun, aws-sdk'nin (2.0+) yeni sürümüyle tanıtıldı. Daha fazlasını buradan okuyabilirsiniz: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2


2
Sebebin güncellenmiş 'aws-sdk' geminde olduğunu buldum. Aws-sdk'nin önceki sürümlerle geriye dönük uyumlu olmayan yeni bir sürümü (2+) var. Buradan
TopaZ

Teşekkür ederim, tam olarak ihtiyacım olan şey!
Sprachprofi

27
Ayrıca, bu satırı ile değiştirebilirsiniz gem 'aws-sdk-v1'. Bu daha sonra v2 aws-sdk gemini çekmenize izin verir. Farklı ad alanları nedeniyle aynı uygulamada birlikte kullanılabilirler.
Trevor Rowe

Trevor Rowe'un çözümü benim için mükemmel çalıştı - ve aynı anda kullanılabilmeleri çok yararlı. Trevor teşekkürler!
XtraSimplicity

18

Resmi bir çözüm var Bu şubeden ataç kullanın: 2'nin üzerindeki aws-sdk sürümleriyle çalışır

gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'

sadece ataç s3 yapılandırmanıza s3_region parametresini ekleyin

benim için çalışıyor


1
Aws 1 kullanımdan kaldırıldığı için şu anda en iyi cevap budur.
ardochhigh

4

Gem klasörüme gidip Mücevherleri şu şekilde değiştirerek çalışmasını sağladım:

  • mücevher 'ataç'
  • gem 'aws-sdk'

Sürüm bildirimleri atılabilir.

Bir almaktan kaçınmak için gem.lock error, bundle updatebunun yerine koşunbundle install , aksi takdirde yalnızca taşlar güncellenecektir.

Artık heroku logs -tkomut, heroku sunucusunu görüntü yüklemelerine izlemek için kullanılabilir.

Access Denied ErrorAWS sunucusu için başlangıçta yeni bir hata aldım .

Bunu düzeltmek Active Access Key IDiçin Amazon web sitesinde en son tarihi buldum ve en son Access key IDve Secret access key.

Bu, resmimi heroku'da görmemi sağladı.

O kadar çok şey yaptım Access key IDve Secret access keyssorunu çözmeye çalıştım, ancak cevherleri asıl sorun olarak buldum.

İpucu: Tüm Erişim Anahtarı bilgilerinizi OneNote'a, Not Defteri'ne vb. Kaydedin. Bu şekilde geri dönebilir ve kontrol edebilirsiniz.


Aynı sorunla karşılaşıyorum, sürümleri kaldırarak çözdünüz mü?
Gary Wallen

3

AWS-SDK v1'i 4.3 ve aşağıdaki sürümlerde kullanmak için ataç kullanın. AWS-SDK v2'yi dahil etmeye çalışıyorlar

resmi yükseltme belgesi https://github.com/thoughtbot/paperclip/blob/master/UPGRADING

##################################################
#  NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER       #
##################################################

Paperclip is now compatible with aws-sdk >= 2.0.0.

If you are using S3 storage, aws-sdk >= 2.0.0 requires you to make a few small
changes:

* You must set the `s3_region`
* If you are explicitly setting permissions anywhere, such as in an initializer,
  note that the format of the permissions changed from using an underscore to
  using a hyphen. For example, `:public_read` needs to be changed to
  `public-read`.

Bazı geriye dönük uyumsuzluklar nedeniyle (bunu okuyun https://github.com/thoughtbot/paperclip/issues/2021 ) bu birleştirildi, ancak resmi olarak henüz yayınlanmadı, ancak Paperclip v'de yayınlanmalıdır5.0.0

Vitali Mogilevsky'nin bahsettiği gibi , şimdilik bunu kullanmalısınız:

# Gemfile
# ...
gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'

Paperclip 5.0 piyasaya sürüldüğünde AWS-SDK v2 eklenmelidir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.