[Ting's筆記Day8]活用套件carrierwave gem:(3)Deploy圖片上傳功能到Heroku網站

前情提要:git

 

身爲Ruby新手村民,創造穩定且持續的學習步調很重要,我用的方法就是一週在IT邦寫三篇筆記,但願藉由把筆記和遇到的bug記錄下來的過程,能幫助到將來想用Ruby on Rails架站的新手。:)github

 

話說我在這一天[Ting's筆記Day4]將Ruby on Rails項目部署到Heroku架好了站,並在此篇[Ting's筆記Day7]活用套件carrierwave gem:(2)利用Amazon S3架設圖片服務器完成個人餐廳數據庫網站的圖片上傳功能。接着就要把功能發佈到Heroku啦!數據庫

 

1.修改app/uploaders/image_uploader.rb服務器

爲了節省Amazon S3用量,(畢竟是免費功能,儲存空間必定的限制,能省則省!)app

我想在本機項目上傳圖片時,照片存在本機端就好(xcsjbj);學習

在Heroku(遠端production版本)上傳圖片的時候,再上傳至Amazon S3。網站

 

我能夠去app/uploaders/image_uploader.rb修改一下代碼從:rest

 

storage:fog圖片

改爲rem

 

if Rails.env.production?

storage:fog #Heroku,Use Amazon S3

else

storage:file

end

2.把Figaro gem加入Heroku

在上篇文章提到了Figaro幫咱們隱藏application.yml檔,作好保護密鑰的功能,因爲這個功能動到了config,~~這件事情的嚴重性(?)~~咱們必需要讓Heroku知道!

 

跟隨着Figaro的關於Deployment的說明檔指示,在ternimal輸入figaro heroku:set -e production,程序就會把密鑰信息傳給我在heroku的正式環境。

 

tingdeMacBook-Air:yelpdemo tingtinghsu$ figaro heroku:set -e production

Setting aws_access_key_id,aws_secret_access_key,fog_directory and restarting⬢tingsrailsdemo…done,v7

aws_access_key_id: #祕密

aws_secret_access_key: #不告訴你

fog_directory: #Amazon S3 bucket

3.把全部改動的代碼加入github版控,並push上Heroku:

在這篇文章裏我已經對於git使用的熟練熟練了:

1.git status

2.git add .

3.git commit -m「增長照片上傳功能」

4.git push

因此咱們先把寫好的的功能推上github,最後用git push heroku master完成最後一哩路!

 


tingdeMacBook-Air:yelpdemo tingtinghsu$ git push heroku master

Counting objects: 59,done.

Delta compression using up to 4 threads.

Compressing objects: 100%(52/52),done.

Writing objects: 100%(59/59),331.27 KiB | 0 bytes/s,done.

Total 59(delta 33),reused 0(delta 0)

 

remote: https://tingsrailsdemo.herokuapp.com/ deployed to Heroku

remote:

remote: Verifying deploy…done.

To https://git.heroku.com/tingsrailsdemo.git

cb86240..05af5ff master -> master

到Heroku後臺查看,新功能已經部署成功~

 

4.把新更動過的的餐廳圖片數據庫字段加入Heroku

咱們當初改完上傳功能時,已經在本地端使用rake db:migrate讓數據庫順利運行,詳見[Ting's筆記Day6]活用套件carrierwave gem:(1)在Rails實現圖片上傳功能

但遠端的Heroku部分還沒呢!

所以記得:heroku run rake db:migrate更新Production版本的數據庫。

 

這裏Heroku出現錯誤信息Etimeout: connect etimeout 50.19.103.36:5000

參考這裏的解法,才發現個人wifi所在地的防火牆鎖port 5000。

 

我使用run:detached這個指令來解決此問題:heroku run:detached rake db:migrate

 

tingdeMacBook-Air:yelpdemo tingtinghsu$ heroku run:detached rake db:migrate

Running rake db:migrate on⬢tingsrailsdemo…done,run.2219(Free gongzuofs

Run heroku logs --app tingsrailsdemo --dyno run.2219 to view the output.

=大功告成=

 

試試網站上的上傳功能,圖片順利存進Amazon S3:)

相關文章
相關標籤/搜索