Я сделал ruby проект, который хорошо работает на localhost, но при установке на heroku все работает, кроме загрузки изображений. Изображение на локальном хосте загружается на локальный диск в приложении ruby с использованием Active Storage. Проблема в том, что при размещении на хостинге сайт создаст sh приложение, генерирующее этот журнал:
2020-01-28T15:44:33.750908+00:00 app[web.1]: I, [2020-01-28T15:44:33.750790 #4] INFO -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9] Started POST "/feeds" for 95.176.181.115 at 2020-01-28 15:44:33 +0000
2020-01-28T15:44:33.752292+00:00 app[web.1]: I, [2020-01-28T15:44:33.752226 #4] INFO -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9] Processing by FeedsController#create as HTML
2020-01-28T15:44:33.752431+00:00 app[web.1]: I, [2020-01-28T15:44:33.752364 #4] INFO -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9] Parameters: {"utf8"=>"✓", "authenticity_token"=>"J7xUIlrhg44SxhwA08/LH7vOB31kBtUHpNQGolnDfXuVxm+7JyyPjJ1iIT62rYrWd9zpTrgf39sViK/IraRoxA==", "feed"=>{"text"=>"", "image"=>#<ActionDispatch::Http::UploadedFile:0x00005648374f39d8 @tempfile=#<Tempfile:/tmp/RackMultipart20200128-4-1s17tkn.jpg>, @original_filename="759504.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"feed[image]\"; filename=\"759504.jpg\"\r\nContent-Type: image/jpeg\r\n">, "picture"=>"", "time(1i)"=>"2020", "time(2i)"=>"1", "time(3i)"=>"28", "time(4i)"=>"15", "time(5i)"=>"44", "reported"=>"none"}, "commit"=>"Post"}
2020-01-28T15:44:33.758110+00:00 app[web.1]: I, [2020-01-28T15:44:33.758038 #4] INFO -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9] Completed 500 Internal Server Error in 6ms (ActiveRecord: 0.0ms)
2020-01-28T15:44:33.758891+00:00 app[web.1]: F, [2020-01-28T15:44:33.758820 #4] FATAL -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9]
2020-01-28T15:44:33.758971+00:00 app[web.1]: F, [2020-01-28T15:44:33.758911 #4] FATAL -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9] NoMethodError (undefined method `upload' for nil:NilClass):
2020-01-28T15:44:33.759055+00:00 app[web.1]: F, [2020-01-28T15:44:33.758980 #4] FATAL -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9]
2020-01-28T15:44:33.759110+00:00 app[web.1]: F, [2020-01-28T15:44:33.759055 #4] FATAL -- : [dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9] app/controllers/feeds_controller.rb:52:in `create'
2020-01-28T15:44:33.756948+00:00 heroku[router]: at=info method=POST path="/feeds" host=tweets-school.herokuapp.com request_id=dbd0c2ea-75eb-4bcb-9456-8d85cc7f0cd9 fwd="95.176.181.115" dyno=web.1 connect=1ms service=670ms status=500 bytes=1827 protocol=https
Вот как я прикрепляю файл при создании объекта:
def create
@feed = Feed.new(feed_params)
@feed.user = current_user
@feed.image.attach(params[:feed][:image])
respond_to do |format|
if @feed.save
format.html { redirect_to root_path, notice: 'Feed was successfully created.' }
format.json { render :show, status: :created, location: @feed }
else
format.html { render :new }
format.json { render json: @feed.errors, status: :unprocessable_entity }
end
end
end
Как бы это исправить?