【问题标题】:Heroku - Ruby on Rails - Upload of picturesHeroku - Ruby on Rails - 上传图片
【发布时间】:2013-12-20 18:36:11
【问题描述】:

我们正在开发 PYL 项目(一种处理用户可以修改的图片的社交网络)。我们有一些在本地主机上工作的网站功能的代码(上传,修改......)但是当我们想通过 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 帐户才能从我的网站上传和保存图像?即使没有 Amazon S3 帐户,它也应该可以工作,不是吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 你的答案和我的有什么不同?你应该通过接受他们的回答来奖励帮助你的人......
    【解决方案2】:

    正如@TheChamp 所说,heroku 的文件系统是短暂的,但您还应该注意您的日志显示以下内容:

    ActionController::RoutingError (uninitialized constant PhotoController):
    

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

    【讨论】:

      【解决方案3】:

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

      Setting up S3 with Paperclip

      【讨论】:

        猜你喜欢
        • 2010-12-23
        • 1970-01-01
        • 2019-07-13
        • 1970-01-01
        • 2018-02-05
        • 2016-11-12
        • 1970-01-01
        • 2021-06-11
        • 2021-02-04
        相关资源
        最近更新 更多