简体   繁体   中英

get Error heroku when uploading image paperclip

I installed the Paperclip gem into my rails app so I can enable users to upload pictures. Everything seems to be working fine locally. I then pushed to Heroku via the git push heroku master command line prompt and then proceeded to interact with my app live online. When I try to upload a picture and then click on the submit button, an error message appears.

在此处输入图片说明

Here are my logs (updated)

       2014-07-01T06:50:55.157229+00:00 app[web.1]:   Rendered layouts/_header.html.erb (0.7ms)
2014-07-01T06:50:56.211672+00:00 heroku[router]: at=info method=GET path="/about" host=omr-photoshare.herokuapp.com request_id=0b8e9a43-5ffd-4bae-aa4f-61e9f87dfdfc fwd="65.78.4.236" dyno=web.1 connect=2ms service=192ms status=304 bytes=845
2014-07-01T06:50:56.025883+00:00 app[web.1]: Started GET "/about" for 65.78.4.236 at 2014-07-01 06:50:56 +0000
2014-07-01T06:50:56.082614+00:00 app[web.1]:   Rendered pages/about.html.erb within layouts/application (0.2ms)
2014-07-01T06:50:56.174581+00:00 app[web.1]: Completed 200 OK in 95ms (Views: 7.0ms | ActiveRecord: 86.8ms)
2014-07-01T06:50:56.079586+00:00 app[web.1]: Processing by PagesController#about as HTML
2014-07-01T06:50:56.173874+00:00 app[web.1]:   Rendered layouts/_header.html.erb (90.3ms)
2014-07-01T06:50:57.026362+00:00 heroku[router]: at=info method=GET path="/users/edit" host=omr-photoshare.herokuapp.com request_id=9e7dbd9b-1e90-4cf0-b422-a39fc4dd86af fwd="65.78.4.236" dyno=web.1 connect=4ms service=26ms status=200 bytes=4509
2014-07-01T06:50:57.023820+00:00 app[web.1]:   Rendered devise/registrations/edit.html.erb within layouts/application (6.5ms)
2014-07-01T06:50:57.007189+00:00 app[web.1]: Started GET "/users/edit" for 65.78.4.236 at 2014-07-01 06:50:57 +0000
2014-07-01T06:50:57.027133+00:00 app[web.1]: Completed 200 OK in 16ms (Views: 12.8ms | ActiveRecord: 1.3ms)
2014-07-01T06:50:57.010704+00:00 app[web.1]: Processing by Devise::RegistrationsController#edit as HTML
2014-07-01T06:50:57.026562+00:00 app[web.1]:   Rendered layouts/_header.html.erb (0.5ms)
2014-07-01T06:50:58.037348+00:00 heroku[router]: at=info method=POST path="/users/sign_out" host=omr-photoshare.herokuapp.com request_id=62ed2279-f63e-4c4f-9721-7b1361348276 fwd="65.78.4.236" dyno=web.1 connect=32ms service=41ms status=302 bytes=931
2014-07-01T06:50:58.138958+00:00 heroku[router]: at=info method=GET path="/" host=omr-photoshare.herokuapp.com request_id=d36b09ab-feb9-4e13-8b07-97bda734f4cd fwd="65.78.4.236" dyno=web.1 connect=1ms service=72ms status=200 bytes=2809
2014-07-01T06:50:58.004542+00:00 app[web.1]: Started DELETE "/users/sign_out" for 65.78.4.236 at 2014-07-01 06:50:58 +0000
2014-07-01T06:50:58.034982+00:00 app[web.1]: Completed 302 Found in 25ms (ActiveRecord: 12.2ms)
2014-07-01T06:50:58.119933+00:00 app[web.1]: Processing by PagesController#home as HTML
2014-07-01T06:50:58.137550+00:00 app[web.1]:   Rendered layouts/_header.html.erb (0.5ms)
2014-07-01T06:50:58.009338+00:00 app[web.1]: Processing by Devise::SessionsController#destroy as HTML
2014-07-01T06:50:58.116047+00:00 app[web.1]: Started GET "/" for 65.78.4.236 at 2014-07-01 06:50:58 +0000
2014-07-01T06:50:58.009357+00:00 app[web.1]:   Parameters: {"authenticity_token"=>"5AnEyKY75EbCUcrc50OZjx2MOguNlKFceSaDg5DoFzw="}
2014-07-01T06:50:58.136033+00:00 app[web.1]:   Rendered pages/home.html.erb within layouts/application (14.2ms)
2014-07-01T06:50:58.034741+00:00 app[web.1]: Redirected to http://omr-photoshare.herokuapp.com/
2014-07-01T06:50:58.138057+00:00 app[web.1]: Completed 200 OK in 18ms (Views: 16.7ms | ActiveRecord: 0.0ms)
2014-07-01T06:51:00.169842+00:00 heroku[router]: at=info method=GET path="/users/sign_in" host=omr-photoshare.herokuapp.com request_id=102f1369-f2c7-4c60-95fd-fdcf94c91f3b fwd="65.78.4.236" dyno=web.1 connect=1ms service=95ms status=200 bytes=3735
2014-07-01T06:51:00.148527+00:00 app[web.1]: Started GET "/users/sign_in" for 65.78.4.236 at 2014-07-01 06:51:00 +0000
2014-07-01T06:51:00.163967+00:00 app[web.1]:   Rendered devise/shared/_links.erb (1.7ms)
2014-07-01T06:51:00.164009+00:00 app[web.1]:   Rendered devise/sessions/new.html.erb within layouts/application (6.6ms)
2014-07-01T06:51:00.165306+00:00 app[web.1]:   Rendered layouts/_header.html.erb (0.7ms)
2014-07-01T06:51:00.152352+00:00 app[web.1]: Processing by Devise::SessionsController#new as HTML
2014-07-01T06:51:00.165745+00:00 app[web.1]: Completed 200 OK in 13ms (Views: 10.2ms | ActiveRecord: 0.0ms)
2014-07-01T06:51:01.519186+00:00 heroku[router]: at=info method=POST path="/users/sign_in" host=omr-photoshare.herokuapp.com request_id=2e71a5f1-e10a-4158-af5c-6f80f8aac4a3 fwd="65.78.4.236" dyno=web.1 connect=9ms service=144ms status=302 bytes=1041
2014-07-01T06:51:01.575579+00:00 heroku[router]: at=info method=GET path="/" host=omr-photoshare.herokuapp.com request_id=304d9c4f-d607-4f37-aa75-bf07c48ace45 fwd="65.78.4.236" dyno=web.1 connect=3ms service=25ms status=200 bytes=2911
2014-07-01T06:51:01.571496+00:00 app[web.1]: Processing by PagesController#home as HTML
2014-07-01T06:51:01.518046+00:00 app[web.1]: Completed 302 Found in 133ms (ActiveRecord: 12.5ms)
2014-07-01T06:51:01.381342+00:00 app[web.1]: Started POST "/users/sign_in" for 65.78.4.236 at 2014-07-01 06:51:01 +0000
2014-07-01T06:51:01.576450+00:00 app[web.1]:   Rendered layouts/_header.html.erb (0.5ms)
2014-07-01T06:51:01.384466+00:00 app[web.1]: Processing by Devise::SessionsController#create as HTML
2014-07-01T06:51:01.384511+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"+8dZCduvFyzofV4G28jmxjsOXYrweHJ+cdJe3lEWPTQ=", "user"=>{"email"=>"cghazanfar10@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
2014-07-01T06:51:01.517874+00:00 app[web.1]: Redirected to http://omr-photoshare.herokuapp.com/
2014-07-01T06:51:01.568980+00:00 app[web.1]: Started GET "/" for 65.78.4.236 at 2014-07-01 06:51:01 +0000
2014-07-01T06:51:01.575119+00:00 app[web.1]:   Rendered pages/home.html.erb within layouts/application (2.4ms)
2014-07-01T06:51:01.576943+00:00 app[web.1]: Completed 200 OK in 5ms (Views: 3.1ms | ActiveRecord: 1.4ms)
2014-07-01T07:53:44.045215+00:00 heroku[web.1]: State changed from up to down
2014-07-01T07:53:44.044809+00:00 heroku[web.1]: Idling
2014-07-01T07:53:47.433692+00:00 app[web.1]: [2014-07-01 07:53:47] FATAL SignalException: SIGTERM
2014-07-01T07:53:47.433697+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `select'
2014-07-01T07:53:47.433700+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `block in start'
2014-07-01T07:53:47.433702+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:32:in `start'
2014-07-01T07:53:47.433704+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:160:in `start'
2014-07-01T07:53:47.433753+00:00 app[web.1]:    /app/vendor/bundle
/ruby/2.0.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:14:in `run'
2014-07-01T07:53:47.433755+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
2014-07-01T07:53:47.433757+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/server.rb:69:in `start'
2014-07-01T07:53:47.433758+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:81:in `block in server'
2014-07-01T07:53:47.433760+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `tap'
2014-07-01T07:53:47.433761+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `server'
2014-07-01T07:53:47.433763+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
2014-07-01T07:53:47.433764+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands.rb:17:in `<top (required)>'
2014-07-01T07:53:47.433766+00:00 app[web.1]:    bin/rails:8:in `require'
2014-07-01T07:53:47.433767+00:00 app[web.1]:    bin/rails:8:in `<main>'
2014-07-01T07:53:47.433773+00:00 app[web.1]: [2014-07-01 07:53:47] INFO  going to shutdown ...
2014-07-01T07:53:47.433817+00:00 app[web.1]: [2014-07-01 07:53:47] INFO  WEBrick::HTTPServer#start done.
2014-07-01T07:53:47.433890+00:00 app[web.1]: Exiting
2014-07-01T07:53:49.611381+00:00 heroku[web.1]: Process exited with status 143
2014-07-01T07:53:46.855962+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2014-07-01T15:33:01.545336+00:00 heroku[web.1]: Unidling
2014-07-01T15:33:01.545628+00:00 heroku[web.1]: State changed from down to starting
2014-07-01T15:33:08.727524+00:00 app[web.1]: [2014-07-01 15:33:08] INFO  WEBrick 1.3.1
2014-07-01T15:33:08.727547+00:00 app[web.1]: [2014-07-01 15:33:08] INFO  ruby 2.0.0 (2014-05-08) [x86_64-linux]
2014-07-01T15:33:08.727961+00:00 app[web.1]: [2014-07-01 15:33:08] INFO  WEBrick::HTTPServer#start: pid=2 port=36532
2014-07-01T15:33:04.638475+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 36532 -e production`
2014-07-01T15:33:09.317544+00:00 heroku[web.1]: State changed from starting to up
2014-07-01T15:33:10.624767+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=omr-photoshare.herokuapp.com request_id=10c1d02a-1e17-4a48-9838-c35c2d530b52 fwd="66.249.83.39" dyno=web.1 connect=4ms service=8ms status=200 bytes=228
2014-07-01T16:38:20.572132+00:00 heroku[web.1]: State changed from up to down
2014-07-01T16:38:20.571809+00:00 heroku[web.1]: Idling
2014-07-01T16:38:25.614240+00:00 app[web.1]: [2014-07-01 16:38:25] FATAL SignalException: SIGTERM
2014-07-01T16:38:25.614249+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `select'
2014-07-01T16:38:25.614252+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `block in start'
2014-07-01T16:38:25.614254+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:32:in `start'
2014-07-01T16:38:25.614255+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:160:in `start'
2014-07-01T16:38:25.614257+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:14:in `run'
2014-07-01T16:38:25.614260+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/server.rb:69:in `start'
2014-07-01T16:38:25.614258+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
2014-07-01T16:38:25.614262+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:81:in `block in server'
2014-07-01T16:38:25.614268+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands.rb:17:in `<top (required)>'
2014-07-01T16:38:25.614263+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `tap'
2014-07-01T16:38:25.614342+00:00 app[web.1]: [2014-07-01 16:38:25] INFO  going to shutdown ...
2014-07-01T16:38:25.614455+00:00 app[web.1]: => Ctrl-C to shutdown server
2014-07-01T16:38:25.614272+00:00 app[web.1]:    bin/rails:8:in `<main>'
2014-07-01T16:38:25.614452+00:00 app[web.1]: => Run `rails server -h` for more startup options
2014-07-01T16:38:25.614265+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `server'
2014-07-01T16:38:25.614266+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
2014-07-01T16:38:25.614270+00:00 app[web.1]:    bin/rails:8:in `require'
2014-07-01T16:38:25.614406+00:00 app[web.1]: [2014-07-01 16:38:25] INFO  WEBrick::HTTPServer#start done.
2014-07-01T16:38:25.614450+00:00 app[web.1]: => Rails 4.1.1 application starting in production on http://0.0.0.0:36532
2014-07-01T16:38:25.614475+00:00 app[web.1]: Exiting
2014-07-01T16:38:25.614448+00:00 app[web.1]: => Booting WEBrick
2014-07-01T16:38:25.614453+00:00 app[web.1]: => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
2014-07-01T16:38:24.918023+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2014-07-01T16:38:28.512103+00:00 heroku[web.1]: Process exited with status 143

pins_controller.rb

class PinsController < ApplicationController
  before_action :set_pin, only: [:show, :edit, :update, :destroy]
  before_action :correct_user, only: [:edit, :update, :destroy]
  before_action :authenticate_user!, except: [:index, :show]
  def index
    @pins = Pin.all
  end

  def show
  end

  def new
    @pin = current_user.pins.build
  end

  def edit
  end

  def create
    @pin = current_user.pins.build(pin_params)

      if @pin.save
      redirect_to @pin, notice: 'Pin was successfully created.'


    else

      render action: 'new'
    end
  end

  def update
    if @pin.update(pin_params)
      redirect_to @pin, notice: 'Pin was successfully updated.'
    else
      render action: 'edit'
    end
  end

  def destroy
    @pin.destroy
    redirect_to pins_url
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_pin
      @pin = Pin.find(params[:id])
    end

    def correct_user
      @pin = current_user.pins.find_by(id: params[:id] )
      redirect_to pins_path, notice: "Not authorized to edit this Pin" if @pin.nil?
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def pin_params
      params.require(:pin).permit(:description, :image, :file_avatar)
    end
end

model/pin.rb

class Pin < ActiveRecord::Base
    belongs_to :user
    has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
    validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] }
end

db/migrate add_attached_image_to_pins.rb

class AddAttachmentImageToPins < ActiveRecord::Migration
  def self.up
    change_table :pins do |t|
      t.attachment :image

    end
  end

  def self.down
    drop_attached_file :pins, :image


  end
end

And finally the Gemfile

source 'https://rubygems.org'
gem 'rails', '4.1.1'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'bootstrap-sass'
gem 'devise', '~> 3.2.4'
gem 'paperclip', github: 'thoughtbot/paperclip'
gem 'aws-sdk', '~> 1.45.0'


group :development, :test do
     gem 'sqlite3'
end

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

gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development

production.rb

Rails.application.configure do

  config.cache_classes = true

  config.eager_load = true

  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  config.serve_static_assets = false

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = false

  # Generate digests for assets URLs.
  config.assets.digest = true

  # Version of your assets, change this if you want to expire all your assets.
  config.assets.version = '1.0'


  # Set to :debug to see everything in the log.
  config.log_level = :info


  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify


  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false

  #required for Heroku
  #Note to set this to your actual host
  config.action_mailer.default_url_options = { host: 'http://omr-photoshare.herokuapp.com/' }
# sets paperclip to upload image to aws
  config.paperclip_defaults = {
    :storage => :s3,
    :s3_credentials => {
      :bucket => ENV['S3_BUCKET_NAME'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
  }

end

So far everything seemed to work until I started to interact with my app online through Heroku .

Here is my GitHub repo: https://github.com/cyzanfar/Photoshare

Thanks for any future help.

The actual error is here:

Paperclip::Error (Pin model missing required attr_accessor for 'image_file_name')

You need to add the Paperclip related columns like this to your Pin model:

rails generate paperclip Pin image

heroku run rake db:migrate

or create a migration file, example:

class AddAvatarColumnsToUsers < ActiveRecord::Migration
  def self.up
    add_attachment :users, :avatar
  end

  def self.down
    remove_attachment :users, :avatar
  end
end

You Pin model should also specify:

Class Pin < ActiveRecord::Base
  has_attached_file :image

DB

Here's your error:

Paperclip::Error (Pin model missing required attr_accessor for 'image_file_name'):

This is typically because you have either not included the has_attached_file helper in your paperclip model, or you have not performed the Paperclip migration

If it works in development, it will likely mean you have not got the db set up on Heroku - which can be fixed by using the following:

$ heroku run rake db:migrate

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM