NameError (अनैतिक रूप से स्थिर कागज़ का :: भंडारण :: S3 :: AWS):


91

मैं अपने वेब ऐप में छवियों को शामिल करने की कोशिश कर रहा हूं और काफी कुछ सुविधाओं को हटाने के बाद मैं इस त्रुटि में भाग रहा हूं। यह मेरे 'क्रिएट' एप्लिकेशन कंट्रोलर के लिए नीचे आया और मुझे पूरी तरह यकीन नहीं है कि मुझे यहाँ से कहाँ जाना चाहिए।

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

Articles_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

क्या आप हरोकू में तैनात हैं?
अहमद अल-खेत

हां, मेरे पास पहले से ही है और मैं हरको लॉग में देख रहा हूं और मुझे वह त्रुटि मिली।
अंडिक्स

3
सेट AWS_SECRET_ACCESS_KEY = your_secret_access_key: सेट S3_BUCKET_NAME = your_bucket_name $ Heroku config: सेट AWS_ACCESS_KEY_ID = your_access_key_id $ Heroku config यह है क्योंकि आप Heroku में एडब्ल्यूएस स्थिरांक को प्रारंभ नहीं किया सबसे अधिक संभावना है, तो आप $ Heroku config चलाने की आवश्यकता
अहमद अल kheat

हममम मैं उस कदम का पालन किया था, लेकिन मैं यह सुनिश्चित करने के लिए कि यह सही है सब शुरू कर
दूंगा

ठीक है मुझे बताएं कि क्या यह काम करता है ताकि मैं अन्य लोगों के लिए भी इसका लाभ उठा सकूं।
अहमद अल-खित

जवाबों:


179

2.0 से पहले एक संस्करण स्थापित करने के लिए अपने Gemfile के aws-sdk को संशोधित करें:

gem 'aws-sdk', '< 2.0'

इस मुद्दे को aws-sdk (2.0+) के नए संस्करण के साथ पेश किया गया था। आप यहाँ और अधिक पढ़ सकते हैं: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2


2
मैंने पाया है कि इसका कारण अद्यतन 'aws-sdk' रत्न है। Aws-sdk का एक नया संस्करण (2+) है जो पिछले संस्करणों के साथ पिछड़ा संगत नहीं है। आप यहाँ
TopaZ

धन्यवाद, वास्तव में मुझे क्या चाहिए!
Sprachprofi

27
इसके अलावा, आप उस लाइन को बदल सकते हैं gem 'aws-sdk-v1'। यह तब आपको v2 aws-sdk मणि में खींचने की अनुमति देता है। विभिन्न नामस्थानों के कारण उन्हें एक ही अनुप्रयोग में एक साथ उपयोग किया जा सकता है।
ट्रेवर रोवे

ट्रेवर रोवे के समाधान ने मेरे लिए पूरी तरह से काम किया - और यह तथ्य कि उनका एक साथ उपयोग किया जा सकता है, बहुत उपयोगी है। धन्यवाद ट्रेवर!
XtraSimplicity 10

18

आधिकारिक समाधान है इस शाखा से पेपरक्लिप का उपयोग करें: यह 2 से ऊपर aws-sdk संस्करणों के साथ काम करता है

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

बस जोड़ें: s3_region पैरामीटर आपके पेपरक्लिप s3 के विन्यास में

मेरे लिये कार्य करता है


1
यह अब सबसे अच्छा जवाब है, क्योंकि aws 1 को हटा दिया गया है।
ardochhigh

4

मुझे अपने मणि फ़ोल्डर में नेविगेट करके और रत्न बदलकर काम करने के लिए मिला:

  • मणि 'पेपरक्लिप'
  • मणि 'aws-sdk'

संस्करण की घोषणाओं को छोड़ा जा सकता है।

ए होने से बचने के लिए gem.lock error, bundle updateइसके बजाय दौड़ें bundle install, अन्यथा केवल रत्नों को अपडेट किया जाएगा।

अब, heroku logs -tकमांड को इमेज अपलोड करने के लिए हरोकू सर्वर की निगरानी के लिए उपयोग किया जा सकता है।

मुझे Access Denied ErrorAWS सर्वर के लिए orginally एक नई त्रुटि मिली ।

इसे ठीक करने के लिए मैंने पाया कि Active Access Key IDनवीनतम तारीख के साथ अमेज़न पर websiteand ने नवीनतम Access key IDऔर इनपुट करने के लिए हरोकू कमांड का उपयोग किया Secret access key

इसने मुझे अपनी छवि हर्को पर देखने में सक्षम बनाया।

मैंने बहुत से बनाये थे Access key IDऔर Secret access keysसमस्या को ठीक करने की कोशिश कर रहा था , लेकिन रत्न को वास्तविक समस्या पाया।

युक्ति: OneNote, नोटपैड, आदि के लिए अपनी सभी एक्सेस कुंजी जानकारी सहेजें। इस तरह से आप वापस लौट सकते हैं और उनकी जांच कर सकते हैं।


मैं एक ही मुद्दे में चल रहा हूं, क्या आपने संस्करणों को हटाकर इसे हल किया था?
स्पार्टाकस 38

3

संस्करण 4.3 और bellow में AWS-SDK v1 का उपयोग करने के लिए पेपरक्लिप उपयोग। वे एडब्ल्यूएस-एसडीके वी 2 को शामिल करने की कोशिश कर रहे हैं

आधिकारिक उन्नयन दस्तावेज़ 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`.

कुछ पीछे की अतुलनीयता के कारण (इसे पढ़ें https://github.com/thoughtbot/paperclip/issues/2021 ) यह विलय हो गया है लेकिन आधिकारिक तौर पर अभी तक जारी नहीं किया गया है, लेकिन पेपरलिप वी में जारी किया जाना चाहिए5.0.0

तो जैसे विटाली मोगिलेव्स्की ने उल्लेख किया है, आपको अभी इसके लिए उपयोग करना होगा:

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

जब पेपर 5.0 जारी किया जाता है, तो AWS-SDK v2 को शामिल किया जाना चाहिए

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.