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.