Heroku - Ruby on Rails - 上传图片

时间:2013-12-04 10:17:45

标签: ruby-on-rails ruby ruby-on-rails-3 heroku paperclip

我们正致力于PYL项目(一种处理用户可以修改的图片的社交网络)。我们有网站的一些功能的代码在localhost上工作(上传,修改......)但是当我们想通过Heroku在互联网上输入时,代码不能用于上传!

(我用回形针)

事实上,网站要求用户上传文件,他可以选择喜欢的图片但是当他提交时,图片没有出现,我们有错误!

错误:“我们很抱歉,但出了点问题。” 我的heroku记录在这里:

2013-12-04T10:12:16.681348+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/runtime.rb:17:in `call'
2013-12-04T10:12:16.680828+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
2013-12-04T10:12:16.681348+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/rack/logger.rb:21:in `block in call'
2013-12-04T10:12:16.680828+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
2013-12-04T10:12:16.681348+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:67:in `block in tagged'
2013-12-04T10:12:16.681348+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:25:in `tagged'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/cache/strategy/local_cache.rb:83:in `call'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application.rb:97:in `call'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/lock.rb:17:in `call'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/content_length.rb:14:in `call'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60:in `service'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:511:in `call'
2013-12-04T10:12:16.681348+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/rack/logger.rb:21:in `call'
2013-12-04T10:12:16.681348+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/request_id.rb:21:in `call'
2013-12-04T10:12:16.681925+00:00 app[web.1]:
2013-12-04T10:12:16.681925+00:00 app[web.1]:
2013-12-04T10:12:16.681925+00:00 app[web.1]: ActionController::RoutingError (uninitialized constant PhotoController):
2013-12-04T10:12:16.681925+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/inflector/methods.rb:226:in `block in constantize'
2013-12-04T10:12:16.681925+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/inflector/methods.rb:224:in `each'
2013-12-04T10:12:16.681925+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/inflector/methods.rb:226:in `const_get'
2013-12-04T10:12:16.681925+00:00 app[web.1]:
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
2013-12-04T10:12:16.681556+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/static.rb:64:in `call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/journey/router.rb:59:in `each'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/routing/route_set.rb:44:in `call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/journey/router.rb:71:in `block in call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/routing/route_set.rb:66:in `controller'
2013-12-04T10:12:16.681925+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/inflector/methods.rb:224:in `constantize'
2013-12-04T10:12:16.681925+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/routing/route_set.rb:76:in `controller_reference'
2013-12-04T10:12:16.681925+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/inflector/methods.rb:224:in `inject'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/journey/router.rb:59:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/flash.rb:241:in `call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/conditionalget.rb:25:in `call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/routing/route_set.rb:655:in `call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/head.rb:11:in `call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
2013-12-04T10:12:16.682067+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/etag.rb:23:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/session/abstract/id.rb:225:in `context'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/cookies.rb:486:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/query_cache.rb:36:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/session/abstract/id.rb:220:in `call'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:80:in `run_callbacks'
2013-12-04T10:12:16.682489+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:373:in `_run__2980751904426103993__call__callbacks'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/rack/logger.rb:21:in `call'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:67:in `block in tagged'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:25:in `tagged'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/rack/logger.rb:38:in `call_app'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/rack/logger.rb:21:in `block in call'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:67:in `tagged'
2013-12-04T10:12:16.682720+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/request_id.rb:21:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/content_length.rb:14:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60:in `service'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:511:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application.rb:97:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/lock.rb:17:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/middleware/static.rb:64:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/runtime.rb:17:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/cache/strategy/local_cache.rb:83:in `call'
2013-12-04T10:12:16.683138+00:00 app[web.1]:   vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
2013-12-04T10:12:16.683368+00:00 app[web.1]:   vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
2013-12-04T10:12:16.683368+00:00 app[web.1]:
2013-12-04T10:12:16.683368+00:00 app[web.1]: Started GET "/photos/new" for 130.240.96.136 at 2013-12-04 10:12:16 +0000
2013-12-04T10:12:16.683368+00:00 app[web.1]: Started GET "/photos/new" for 130.240.96.136 at 2013-12-04 10:12:16 +0000
2013-12-04T10:12:16.683368+00:00 app[web.1]:
2013-12-04T10:12:16.683368+00:00 app[web.1]:   vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
2013-12-04T10:12:16.683883+00:00 app[web.1]: Processing by PhotosController#new as HTML
2013-12-04T10:12:16.683883+00:00 app[web.1]: Processing by PhotosController#new as HTML
2013-12-04T10:12:17.489031+00:00 app[web.1]:   Rendered photos/new.html.erb within layouts/application (55.0ms)
2013-12-04T10:12:17.489031+00:00 app[web.1]:   Rendered photos/new.html.erb within layouts/application (55.0ms)
2013-12-04T10:12:17.490529+00:00 app[web.1]: Completed 200 OK in 807ms (Views: 58.3ms | ActiveRecord: 727.6ms)
2013-12-04T10:12:17.490529+00:00 app[web.1]: Completed 200 OK in 807ms (Views: 58.3ms | ActiveRecord: 727.6ms)
2013-12-04T10:12:17.888402+00:00 heroku[router]: at=info method=GET path=/assets/application-f5232013e5e376066072368171046674.css host=peaceful-coast-9294.herokuapp.com fwd="130.240.96.136" dyno=web.1 connect=1ms service=13ms status=200 bytes=106699
2013-12-04T10:12:18.158382+00:00 heroku[router]: at=info method=GET path=/assets/application-500ecc3f86fcdef878a049cb9ca9929b.js host=peaceful-coast-9294.herokuapp.com fwd="130.240.96.136" dyno=web.1 connect=11ms service=18ms status=200 bytes=106270
2013-12-04T10:12:18.880421+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=peaceful-coast-9294.herokuapp.com fwd="130.240.96.136" dyno=web.1 connect=1ms service=4ms status=200 bytes=0
2013-12-04T10:12:30.248880+00:00 app[web.1]: Processing by PhotosController#create as HTML
2013-12-04T10:12:30.248975+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"IXqTzLLBggUvR7A1OCGfwtJ9PGhZaQTi3xY1ctHCmy4=", "photo"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x007f73978a31f0 @tempfile=#<Tempfile:/tmp/RackMultipart20131204-2-mj3wtf>, @original_filename="555.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"photo[image]\"; filename=\"555.png\"\r\nContent-Type: image/png\r\n">}, "commit"=>"Create Photo"}
2013-12-04T10:12:30.250242+00:00 app[web.1]: Completed 500 Internal Server Error in 1ms
2013-12-04T10:12:30.248880+00:00 app[web.1]: Processing by PhotosController#create as HTML
2013-12-04T10:12:30.247018+00:00 app[web.1]: Started POST "/photos" for 130.240.96.136 at 2013-12-04 10:12:30 +0000
2013-12-04T10:12:30.251377+00:00 app[web.1]:
2013-12-04T10:12:30.250242+00:00 app[web.1]: Completed 500 Internal Server Error in 1ms
2013-12-04T10:12:30.247018+00:00 app[web.1]: Started POST "/photos" for 130.240.96.136 at 2013-12-04 10:12:30 +0000
2013-12-04T10:12:30.251377+00:00 app[web.1]:
2013-12-04T10:12:30.251377+00:00 app[web.1]: Paperclip::Error (Photo model missing required attr_accessor for 'image_file_name'):
2013-12-04T10:12:30.251377+00:00 app[web.1]:
2013-12-04T10:12:30.251377+00:00 app[web.1]:
2013-12-04T10:12:30.248975+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"IXqTzLLBggUvR7A1OCGfwtJ9PGhZaQTi3xY1ctHCmy4=", "photo"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x007f73978a31f0 @tempfile=#<Tempfile:/tmp/RackMultipart20131204-2-mj3wtf>, @original_filename="555.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"photo[image]\"; filename=\"555.png\"\r\nContent-Type: image/png\r\n">}, "commit"=>"Create Photo"}
2013-12-04T10:12:30.251377+00:00 app[web.1]:   app/controllers/photos_controller.rb:27:in `create'
2013-12-04T10:12:30.251377+00:00 app[web.1]:
2013-12-04T10:12:30.251377+00:00 app[web.1]: Paperclip::Error (Photo model missing required attr_accessor for 'image_file_name'):
2013-12-04T10:12:30.251377+00:00 app[web.1]:   app/controllers/photos_controller.rb:27:in `create'
2013-12-04T10:12:30.251377+00:00 app[web.1]:

有什么问题?数据库?我是否必须创建一个Amazon S3帐户才能上传并保存我网站上的图像?它应该工作,即使没有亚马逊S3帐户不是吗?

谢谢

3 个答案:

答案 0 :(得分:1)

Heroku没有为您提供上传的网站空间,您的假设是正确的,使用Amazon S3进行设置是可行的方法:

Setting up S3 with Paperclip

答案 1 :(得分:1)

正如@TheChamp所说,heroku的文件系统是短暂的,但你也应该注意你的日志显示如下:

ActionController::RoutingError (uninitialized constant PhotoController):

如果您在切换到S3后发现此问题仍然存在,可能需要调查一下。

答案 2 :(得分:0)

为了回答我自己的问题,事实上你可以在Heroku上传一张图片,但它将是一个临时文件并将被发送到垃圾箱。(我没有让它适用于回形针,但我知道,例如与载波它工作)。

我解决了我的问题,使用amazon AWS S3上传工作(永久存储我的文件)。