Heroku Advent Calendar 2014 - Qiitaã®24æ¥ç®ã§ãã¾ãã
ã¯ããã«
Herokuã§å¥ã®ã¢ããªããåãDBã使ããããã¨ã¯ãªãã ãããï¼ æ°æ©è½ãªãªã¼ã¹ã®æ¬çªç´åã«å®ãã¼ã¿ã使ã£ããããã¤ããã©ã¼ãã³ã¹ãªDBã1å°å©ç¨ãã¦è²»ç¨ãæããããªã©ããã ããã
ã¾ãã¯æ®æ®µã¯AWSçãå©ç¨ãã¦ãã¹ãã¼ã¸ã³ã°ã«Herokuãå©ç¨ããå ´åãåæ§ã«æ¬è¨äºãåèã«ãªããã¨ã ããã
Herokuã§ã·ã³ãã«ãªRailsã¢ããªãä½ãå ´åãåºæ¬çã«ãã®ã¢ããªã«ä»éããPostgreSQLãå©ç¨ããä»çµã¿ã«ãªãã databaseè¨å®ãã¡ã¤ã«ã§ãã,database.yml ã®productionã®é ç®ã¯åç §ãããªã
ããã§æ¬è¨äºã§ã¯ãå¥ã®Herokuã¢ããªã§å©ç¨ãã¦ããPostgreSQLããæ°ãã«Herokuã§ç«ã¡ä¸ããRailsã¢ããªã§å©ç¨ããæé ãè¨è¼ãã
å©ç¨ãããDBã®æ å ±ã確èªãã
Herokuã§ãã¼ã¿ãã¼ã¹ã®ãã¼ã¿ã確èªãããherokuã«ãã°ã¤ã³ããç¶æ ã§ä¸è¨ã®URLã«ã¢ã¯ã»ã¹ãã https://postgres.heroku.com/databases
URLã®é ç®ã¯å¾ã§ä½¿ãã®ã§ã¡ã¢ã以ä¸ã®æ§ãªå¤ããã
postgres://xxxpasswdxxx:xxxusernamexxxr@ec2-xxxx-xxx-xxx--xxx.eu-west-1.compute.amazonaws.com
DBãå©ç¨ããHeroku Appãæ°è¦ä½æãã
# æ°ãAppã使ãã > heroku create # ã¢ããªã±ã¼ã·ã§ã³åãæã«å ¥ã > test-app-1234
追å ããRailsã¢ããªãç¨æãã
ããã§ã¯ãµã³ãã«ã¨ãã¦ãRailsãæ°è¦ä½æããã(æ¥åã§è¡ã£ãã®ã¯ãæ¢åã®Railsã¢ããªã ã)
# Rails ãæ°è¦ä½æ > rails new # git 管çããã > git init > git add -A > git commit -m "init"
git remote ã®è¨å®ããã¦ãããã¤åºæ¥ãããã«ãã
gitããherokuã«ãããã¤ããããã«ããªã¢ã¼ããªãã¸ããªã追å ãã ç¹ã«ãmasterã¨å¥ãã¼ã¸ã§ã³ã®ãªãã¸ããªããããã¤ãããå ´åã«ã¯ãããå¿ è¦
# ãªã¢ã¼ããªãã¸ããªã®è©³ç´°ãç¢ºèª > git remote -v # ã¢ããªã® git urlã確èªãã #herokuã®ã³ã³ã½ã¼ã«ç»é¢ã¸è¡ã£ã¦settings ã®ã¿ãã®ä¸ã«ããinfoã®æ¬ã§ç¢ºèªãã # [email protected]:test-app-1234.git # ãªã¢ã¼ããªãã¸ããªã追å ãã # <name>ã¯ä»»æã®åå > git remote add <name> [email protected]:test-app-1234.git ## æå¾ã«ãªã¢ã¼ããªãã¸ããªã®è©³ç´°ã表示ãã追å ããã¦ãããã¨ã確èªãã > git remote -v
追å ããRailsã¢ããªãHerokuã«è¿½å ãã
# ãªãã¸ããªãmasterã®å ´å > git push <name> # masterãããªããªãã¸ããªã使ãããå ´å > git push <name> <repo_name>:master -f
ãããã¤ãå®äºããã¨ãHerokuã®ã¢ããªä¸ã§DBã®è¨å®ããã¦ããªãã«ããããããã Herokuããããã©ã«ãã§è¿½å ãããPostgresã®ç¡æçã追å ããã â» Herokuã®ç®¡çç»é¢ããããheroku configã³ãã³ãããã確èªãã§ãã
Herokuã®Railsã¢ããªã®DBè¨å®ã夿´ãã
- ã¾ãã¯Webã®ç®¡çç»é¢ããåé¤ãã
- 次ã«ãherokuã³ãã³ãã§DBã®æ¥ç¶è¨å®ãå®ç¾©ãã
# ç°å¢å¤æ°ã表示ããDATABASE_URLãâç¡ããã¨âã確èªãã > heroku config -a test-app-1234 heroku config -atest-app-1234 test-app-1234 Config Vars LANG: en_US.UTF-8 RACK_ENV: production RAILS_ENV: production # DATABASE_URL:ããè¨å®ãã¦ãã # ãã®ã¨ãè¨å®ããpostgres://ããã®å¤ã¯ãä¸è¿°ã®ãå©ç¨ãããDBã®æ å ±ã確èªãããã§åå¾ãããã® > heroku config:set DATABASE_URL=postgres://xxxpasswdxxx:xxxusernamexxxr@ec2-xxxx-xxx-xxx--xxx.eu-west-1.compute.amazonaws.com -a test-app-1234 ï¼ã¢ããªã®åèµ·å > heroku restart -a test-app-1234
refs: http://stackoverflow.com/questions/5981508/share-database-between-2-apps-in-heroku