前情提要: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:)