रूबी पेपरक्लिप एस 3 त्रुटि - रूबी, अमेज़ॅन-एस 3, पेपरक्लिप

मैं पेरूक्लिप का उपयोग उसकेोकू और एस 3 के साथ करने की कोशिश कर रहा हूं,लेकिन मेरे पास कई टेबल हैं जो फ़ोटो से जुड़े हो सकते हैं, हम इसका उपयोग करेंगे: उदाहरण के लिए समीक्षा। मैं समीक्षा से तस्वीर को अलग करने की कोशिश कर रहा हूं और इसे अलग से अपलोड कर रहा हूं, लेकिन चूंकि मैं रूबी के लिए नया हूं, मुझे लगता है कि मैं बुरी तरह विफल रहा हूं। मेरे पास "aws-s3" मणि स्थापित है और बंडल है।

यह वह त्रुटि है जिसे मैं प्राप्त कर रहा हूं:

LoadError in ReviewsController#create

no such file to load -- aws/s3 (You may need to install the aws-s3 gem)
Rails.root: C:/www/devise

Application Trace | Framework Trace | Full Trace
app/controllers/reviews_controller.rb:56:in `new"
app/controllers/reviews_controller.rb:56:in `block in create"
app/controllers/reviews_controller.rb:54:in `create"
app/controllers/redirect_back.rb:23:in `store_location"
This error occurred while loading the following files:
aws/s3

फोटो मॉडल:

class Photo < ActiveRecord::Base
belongs_to :user
belongs_to :shop
belongs_to :baristum
belongs_to :review

#paperclip
has_attached_file :photo,
:styles => {
:thumb=> "100x100#",
:small  => "400x400>",
:original => "800x800" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => "/:style/:id/:filename"

end

फोटो स्कीमा:

t.string   "file_name"
t.string   "content_type"
t.integer  "file_size"
t.integer  "user_id"
t.integer  "barista_id"
t.integer  "review_id"
t.integer  "shop_id"
t.datetime "created_at"
t.datetime "updated_at"

समीक्षा नियंत्रक:

def create
#add the current user to the review hash, from the session var.
params[:review][:user_id] = current_user.id

#move the photo to another var, so I can remove it from the review insert
@photoUpload = params[:review][:photo]
params[:review].delete("photo")

@review = Review.new(params[:review])

respond_to do |format|
if @review.save
@photo = Photo.new(:photo => @photoUpload, :review_id => @review.id)
@photo.save

format.html { redirect_to(@review, :notice => "Review was successfully created.") }
format.xml  { render :xml => @review, :status => :created, :location => @review }
else
@shopList = Shop.find(:all)
format.html { render :action => "new" }
format.xml  { render :xml => @review.errors, :status => :unprocessable_entity }
end
end
end

gemfile

source "http://rubygems.org"

gem "pg"
gem "rake", "~> 0.8.7"
gem "rails", "3.0.5"
#gem "sqlite3-ruby", :require => "sqlite3"
gem "devise", :git => "git://github.com/plataformatec/devise", :branch => "master"
gem "omniauth", "0.2.0"
gem "paperclip"
#gem "RMagick"
gem "simple_form", "~> 1.2.2"
gem "twitter_oauth", "0.4.3"
gem "rest-client", "1.6.1", :require => "restclient"
gem "sluggable"
gem "gmaps4rails"
gem "exception_notification", :require => "exception_notifier"
gem "yaml_db"
#gem "mysql"
gem "aws-s3"


#gem "carrierwave"
#gem "fog" #amazon s3
#gem "nokogiri"

group :development, :test do
gem "rspec-rails"
gem "fixjour"
end

उत्तर:

उत्तर № 1 के लिए 1

जब आप अपनी मणि फ़ाइल में शामिल करते हैं तो "aws-s3" मणि आवश्यक कथन जोड़ना याद रखता है।

gem "aws-s3", :require => "aws/s3"

उत्तर № 2 के लिए 1

पेपरक्लिप के वर्तमान संस्करणों का उपयोग करें aws-sdk बजाय, मणि aws-s3 मणि।

पेपरक्लिप के नवीनतम संस्करण के साथ संयुक्त, उस मणि के नवीनतम संस्करण को चलाने का प्रयास करें जो आपके रेल स्टैक का समर्थन करता है (रेल 2.3 के लिए पेपरक्लिप 2.x, या रेल 3+ के लिए पेपरक्लिप 3.x)।


जवाब के लिए 0 № 3

ऐसा लगता है कि आपको अपनी फ़ोटो स्कीमा में निम्न फ़ील्ड रखने की आवश्यकता है।

  t.string :file_file_name
t.string :file_content_type
t.integer :file_file_size
t.datetime :file_updated_at

इसे चलाने से आपके लिए ऐसा करने के लिए एक माइग्रेशन उत्पन्न होगा

  #this convention: rails generate paperclip [model] [attachmentname]
rails generate paperclip photo file

आपके पास नामित टेबल कॉलम होना चाहिएपेपरक्लिप के लिए इस सम्मेलन के बाद उन्हें चुनने के लिए: "अटैचमेंटनाम" _file_name, "attachmentname" _content_type, आदि ... जहां आप "अपने फोटो मॉडल को कॉल कर रहे हैं" s_attachment "file" है।


संबंधित सवाल
सबसे लोकप्रिय