2015-01-08 3 views
0

후 마구 제품 사진을 지속 : 나는 제품 사진을 업로드 시작내가 일하고 있어요 샘플 페이지가 'Heroku가 다시 시작'

http://os-oven.herokuapp.com/ 

. 내 일을 시도하는 동안 어떤 시점에서, 나는 내 사진을 전멸

heroku restart 

실행했다 :

2015-01-08T14:13:39.161552+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/spree/products/1/small/Pumpkin_Pie_from_a_-real-_pumpkin__November_2007.jpg"): 
2015-01-08T14:13:39.161554+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.8/lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
2015-01-08T14:13:39.161555+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.8/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
2015-01-08T14:13:39.161573+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/railties-4.1.8/lib/rails/rack/logger.rb:38:in `call_app' 
2015-01-08T14:13:39.161574+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/railties-4.1.8/lib/rails/rack/logger.rb:20:in `block in call' 
2015-01-08T14:13:39.161576+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.8/lib/active_support/tagged_logging.rb:68:in `block in tagged' 
2015-01-08T14:13:39.161578+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.8/lib/active_support/tagged_logging.rb:26:in `tagged' 
2015-01-08T14:13:39.161579+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.8/lib/active_support/tagged_logging.rb:68:in `tagged' 
2015-01-08T14:13:39.161581+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/railties-4.1.8/lib/rails/rack/logger.rb:20:in `call' 
2015-01-08T14:13:39.161582+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.8/lib/action_dispatch/middleware/request_id.rb:21:in `call' 
2015-01-08T14:13:39.161584+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call' 
2015-01-08T14:13:39.161585+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/runtime.rb:17:in `call' 
2015-01-08T14:13:39.161586+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.8/lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call' 
2015-01-08T14:13:39.161588+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.8/lib/action_dispatch/middleware/static.rb:84:in `call' 
2015-01-08T14:13:39.161590+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/sendfile.rb:112:in `call' 
2015-01-08T14:13:39.161591+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/railties-4.1.8/lib/rails/engine.rb:514:in `call' 
2015-01-08T14:13:39.161593+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/railties-4.1.8/lib/rails/application.rb:144:in `call' 
2015-01-08T14:13:39.161594+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:576:in `process_client' 
2015-01-08T14:13:39.161596+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:670:in `worker_loop' 
2015-01-08T14:13:39.161597+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:525:in `spawn_missing_workers' 
2015-01-08T14:13:39.161598+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:140:in `start' 
2015-01-08T14:13:39.161600+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.3/bin/unicorn:126:in `<top (required)>' 
2015-01-08T14:13:39.161601+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/bin/unicorn:23:in `load' 
2015-01-08T14:13:39.161602+00:00 app[web.1]: vendor/bundle/ruby/2.1.0/bin/unicorn:23:in `<main>' 

사진은 로컬로 저장되어 있어야합니다, 그리고 내 응용 프로그램을 다시 시작할 때, 그것은 뽑아 git의 최신 코드.

spree 용 데이터베이스에 제품 사진을 저장하려면 어떻게해야합니까?

내 생각 :

  1. 가 S3 같은에 넣어. 이것에 대한 단점은 차라리 '자유'옵션을 갖고있는 것입니다. 게다가, 당신은 어떻게 이런 일을하도록하겠습니까?
  2. 버전 제어에서 파일을 가져옵니다. db와 동일한 파일 경로를 사용하여 동일한 db를 사용하려면 prod와 dev가 필요하다는 점을 제외하면 작동합니다.
  3. blob을 db에 유지합니다. 나는 이것이 아마도 가장 효율적인 방법이 아니라는 것을 알고 있지만, 데이터는 항상 이용 가능할 것입니다. 이 작업을 수행하려면 여전히 유인 엔진을 조정해야합니다.

답변

1

영웅 사진을 저장할 수 없습니다. Heroku는 "읽기 전용 파일 시스템"을 가지고 있습니다 https://devcenter.heroku.com/articles/read-only-filesystem

무료로 이용하면 cloudinary.com 또는 Amazon S3를 사용할 수 있습니다. Amazon S3 또한 최대 5Gb까지 무료입니다. http://aws.amazon.com/free/

+0

실제로 Heroku는 Bamboo 스택 이후로 오랫동안 읽기 전용 파일 시스템을 사용하지 않았습니다. 오늘 (Cedar 또는 Cedar-14를 사용하면) 데이터를 쓸 수있게하는 임시 파일 시스템 (https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem)을 얻을 수 있지만이 데이터는 dyno 다시 시작합니다. 해결책은 여전히 ​​[S3 사용] (https://devcenter.heroku.com/articles/s3) 또는 비슷한 것입니다. [이 튜토리얼] (https://devcenter.heroku.com/articles/direct-to-s3-image-uploads-in-rails)은 Rails에 특화되어있어 OP에 도움이 될 수 있습니다. – Chris