Rails ๊ฐ€์ด๋“œ ๐Ÿ“•

๋ ˆ์ผ์Šค์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ดํŽด๋ณด๊ธฐ

์‹œ์ž‘ํ•˜๊ธฐ

Rails ์‹œ์ž‘ํ•˜๊ธฐ

๋ ˆ์ผ์Šค๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ

์•กํ‹ฐ๋ธŒ ๋ ˆ์ฝ”๋“œ ๊ธฐ๋ณธ

Active Record๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Active Record ๋ชจ๋ธ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์†์„ฑ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ๋ ˆ์ฝ”๋“œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ Active Record์˜ ๊ธฐ๋Šฅ์œผ๋กœ, ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ์ง„ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์ˆ˜ SQL๋กœ ์Šคํ‚ค๋งˆ ์ˆ˜์ •์„ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹ , ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ†ตํ•ด Ruby DSL์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ์„ ๊ธฐ์ˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Active Record ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

์œ ํšจ์„ฑ ๊ฒ€์ฆ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Active Record์˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์ƒํƒœ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ๋ ˆ์ฝ”๋“œ ์ฝœ๋ฐฑ

์ฝœ๋ฐฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Active Record ๊ฐ์ฒด์˜ ๊ฐ์ฒด ๋ผ์ดํ”„์‚ฌ์ดํด์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ๋ ˆ์ฝ”๋“œ ์—ฐ๊ด€๊ด€๊ณ„

Active Record์—์„œ ์—ฐ๊ด€(association)์€ ๋‘ ๊ฐœ์˜ Active Record ๋ชจ๋ธ ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Active Record์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ๋ ˆ์ฝ”๋“œ ์ฟผ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค

์›์‹œ SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ๋Š” ๋Œ€์‹ , Active Record๋Š” ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Active Record๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ๋ชจ๋ธ ๊ธฐ๋ณธ ์‚ฌํ•ญ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์†์„ฑ์„ ์œ„ํ•ด Active Record๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ Active Model์„ ์‚ฌ์šฉํ•˜์—ฌ Action Pack์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜ Ruby ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Active Model์€ ๋˜ํ•œ Rails ํ”„๋ ˆ์ž„์›Œํฌ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์‚ฌ์šฉ์ž ์ •์˜ ORM์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Active Model ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ทฐ

์•ก์…˜ ๋ทฐ ๊ฐœ์š”

์•ก์…˜ ๋ทฐ๋Š” ์›น ์‘๋‹ต์— ๋Œ€ํ•œ HTML์„ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ์•ก์…˜ ๋ทฐ์— ๋Œ€ํ•œ ์†Œ๊ฐœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Rails์—์„œ์˜ ๋ ˆ์ด์•„์›ƒ๊ณผ ๋ Œ๋”๋ง

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์•ก์…˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ์•ก์…˜ ๋ทฐ์˜ ๊ธฐ๋ณธ ๋ ˆ์ด์•„์›ƒ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋ Œ๋”๋ง, ๋ฆฌ๋””๋ ‰์…˜, content_for ๋ธ”๋ก ์‚ฌ์šฉ, ๊ทธ๋ฆฌ๊ณ  ํŒŒ์…œ ์ž‘์—… ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์•ก์…˜ ๋ทฐ ํ—ฌํผ

์•ก์…˜ ๋ทฐ์—๋Š” ๋‚ ์งœ ํ˜•์‹ ์ง€์ •, ์ด๋ฏธ์ง€ ๋งํ‚น, ์ฝ˜ํ…์ธ  ์ •์ œ ๋ฐ ์ง€์—ญํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ—ฌํผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ๋” ์ผ๋ฐ˜์ ์ธ ์•ก์…˜ ๋ทฐ ํ—ฌํผ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์•ก์…˜ ๋ทฐ ํผ ํ—ฌํผ

HTML ํผ์„ ์ž‘์„ฑํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํผ ์ปจํŠธ๋กค ์ด๋ฆ„๊ณผ ๋งŽ์€ ์†์„ฑ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น ๋ฅด๊ฒŒ ์ง€๋ฃจํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ผ์Šค๋Š” ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ์—†์• ๊ณ  ํผ ๋งˆํฌ์—…์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ทฐ ํ—ฌํผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜ํŠธ๋กค๋Ÿฌ

์•ก์…˜ ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ์š”

์•ก์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” Rails ์›น ์š”์ฒญ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”์ฒญ ์ฃผ๊ธฐ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘์šฉํ•˜๋Š”์ง€๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ธ์…˜, ํ•„ํ„ฐ, ์ฟ ํ‚ค, ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ, ์š”์ฒญ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋“ฑ์˜ ์ฃผ์ œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Rails ์™ธ๋ถ€์—์„œ์˜ ๋ผ์šฐํŒ…

Rails ๋ผ์šฐํ„ฐ๋Š” URL์„ ์ธ์‹ํ•˜๊ณ  ์ด๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์•ก์…˜์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Rails ๋ผ์šฐํŒ…์˜ ์‚ฌ์šฉ์ž ๊ธฐ๋Šฅ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„ ์ž์‹ ์˜ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ผ์šฐํŒ…์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋ ค๋ฉด ์—ฌ๊ธฐ์„œ ์‹œ์ž‘ํ•˜์„ธ์š”.

๊ธฐํƒ€ ๊ตฌ์„ฑ ์š”์†Œ

์•กํ‹ฐ๋ธŒ ์„œํฌํŠธ ์ฝ”์–ด ์ต์Šคํ…์…˜

์•กํ‹ฐ๋ธŒ ์„œํฌํŠธ๋Š” ๋ฃจ๋น„ ์–ธ์–ด ํ™•์žฅ ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ Ruby on Rails ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฃจ๋น„ ์–ธ์–ด๋ฅผ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์•ก์…˜ ๋ฉ”์ผ๋Ÿฌ ๊ธฐ๋ณธ ์‚ฌํ•ญ

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ๊ณผ Action Mailer์˜ ๋งŽ์€ ๋‚ด๋ถ€ ๋ชจ์Šต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Action Mailbox ๊ธฐ๋ณธ ์‚ฌํ•ญ

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Action Mailbox๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์•ก์…˜ ํ…์ŠคํŠธ ๊ฐœ์š”

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Action Text๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์น˜ ํ…์ŠคํŠธ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ์žก ๊ธฐ๋ณธ ์‚ฌํ•ญ

์•กํ‹ฐ๋ธŒ ์žก์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์„ ์–ธํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋Œ€๊ธฐ์—ด ๋ฐฑ์—”๋“œ์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ƒ์„ฑ, ๋Œ€๊ธฐ์—ด์— ๋„ฃ๊ธฐ, ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ์Šคํ† ๋ฆฌ์ง€ ๊ฐœ์š”

์•กํ‹ฐ๋ธŒ ์Šคํ† ๋ฆฌ์ง€๋Š” ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ์„œ๋น„์Šค์— ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ , ์—…๋กœ๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ , ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ์ž‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์•กํ‹ฐ๋ธŒ ๋ ˆ์ฝ”๋“œ ๋ชจ๋ธ์— ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Action Cable ๊ฐœ์š”

Action Cable์€ WebSocket์„ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„๊ณผ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๊ธฐ๋Šฅ์„ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„๊ณผ ๋™์ผํ•œ ์Šคํƒ€์ผ๊ณผ ํ˜•์‹์œผ๋กœ Ruby๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Action Cable์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ WebSocket์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

Rails ๊ตญ์ œํ™”(I18n) API

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ตญ์ œํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ปจํ…์ธ ๋ฅผ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•˜๊ณ , ๋ณต์ˆ˜ ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ๊ฐ ๊ตญ๊ฐ€์— ๋งž๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋‚ ์งœ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ผ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

์ด ๊ฐ€์ด๋“œ๋Š” Rails์˜ ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ƒ๋‹นํžˆ ํฌ๊ด„์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. 'ํ…Œ์ŠคํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?'๋ถ€ํ„ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ฆ๊ฒ๊ฒŒ ์ฝ์–ด๋ณด์„ธ์š”.

Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ

์ด ๋งค๋‰ด์–ผ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ฐ˜์ ์ธ ๋ณด์•ˆ ๋ฌธ์ œ์™€ Rails๋กœ ์ด๋ฅผ ํšŒํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ค๋ฅ˜ ๋ณด๊ณ 

์ด ๊ฐ€์ด๋“œ๋Š” Ruby on Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””๋ฒ„๊น…

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋””๋ฒ„๊น…์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๊ณผ ์ฝ”๋“œ ๋„ˆ๋จธ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์„ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑํ•˜๊ธฐ

์ด ๊ฐ€์ด๋“œ๋Š” Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์„ค์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Rails ๋ช…๋ น์ค„

Rails๋ฅผ ์ผ์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์žˆ์–ด ๋งค์šฐ ์ค‘์š”ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ น์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Rails์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์ค„ ๋„๊ตฌ์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์• ์…‹ ํŒŒ์ดํ”„๋ผ์ธ

์• ์…‹ ํŒŒ์ดํ”„๋ผ์ธ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, CSS, ์ด๋ฏธ์ง€ ์• ์…‹์„ ์—ฐ๊ฒฐํ•˜๊ณ  ์ตœ์†Œํ™” ๋˜๋Š” ์••์ถ•ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ CoffeeScript, Sass, ERB์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ์ „์ฒ˜๋ฆฌ๊ธฐ๋กœ ์ด๋Ÿฌํ•œ ์• ์…‹์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Rails์—์„œ JavaScript ์‚ฌ์šฉํ•˜๊ธฐ

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํฌํ•จ์‹œํ‚ค๊ธฐ ์œ„ํ•ด import map ๋˜๋Š” jsbundling-rails๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ณ , Rails์—์„œ Turbo๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Rails ์ดˆ๊ธฐํ™” ํ”„๋กœ์„ธ์Šค

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Rails ์ดˆ๊ธฐํ™” ํ”„๋กœ์„ธ์Šค์˜ ๋‚ด๋ถ€ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊นŠ์ด ์žˆ๋Š” ๊ฐ€์ด๋“œ์ด๋ฉฐ ๊ณ ๊ธ‰ Rails ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ ๋กœ๋“œ ๋ฐ ์ƒ์ˆ˜ ๋ฆด๋กœ๋“œ

์ด ๊ฐ€์ด๋“œ๋Š” ์ž๋™ ๋กœ๋“œ ๋ฐ ๋ฆด๋กœ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์‹์—์„œ Zeitwerk๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด ๊ฐ€์ด๋“œ๋Š” Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ `classic`์—์„œ `zeitwerk` ๋ชจ๋“œ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Rails์—์„œ์˜ ์บ์‹ฑ - ๊ฐœ์š”

์ด ๊ฐ€์ด๋“œ๋Š” ์บ์‹ฑ์„ ํ†ตํ•ด Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์•กํ‹ฐ๋ธŒ ์„œํฌํŠธ ๊ณ„์ธก

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Active Support ๋‚ด๋ถ€์˜ ๊ณ„์ธก API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Rails์™€ ๋‹ค๋ฅธ Ruby ์ฝ”๋“œ ๋‚ด๋ถ€์˜ ์ด๋ฒคํŠธ๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Rails๋ฅผ API ์ „์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Rails๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON API ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Active Record์™€ PostgreSQL

์ด ๊ฐ€์ด๋“œ๋Š” Active Record์—์„œ PostgreSQL ํŠน์ • ์‚ฌ์šฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

์ด ๊ฐ€์ด๋“œ๋Š” Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Active Record ์•”ํ˜ธํ™”

์ด ๊ฐ€์ด๋“œ๋Š” Active Record๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค

์ด ๊ฐ€์ด๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค์— ๋Œ€ํ•œ ์†Œ๊ฐœ์ž…๋‹ˆ๋‹ค.

Rails ํ™•์žฅํ•˜๊ธฐ

Rails ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งŒ๋“ค๊ธฐ ๊ธฐ๋ณธ

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Rails ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋นŒ๋“œ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Rack์„ ์‚ฌ์šฉํ•œ Rails

์ด ๊ฐ€์ด๋“œ๋Š” Rack๊ณผ Rails์˜ ํ†ตํ•ฉ ๋ฐ ๋‹ค๋ฅธ Rack ๊ตฌ์„ฑ ์š”์†Œ์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Rails ์ƒ์„ฑ๊ธฐ ๋ฐ ํ…œํ”Œ๋ฆฟ ๋งŒ๋“ค๊ธฐ์™€ ์‚ฌ์šฉ์ž ์ •์˜

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์— ์ƒˆ๋กœ์šด ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ Rails ๊ธฐ๋ณธ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ(์˜ˆ - ์Šค์บํด๋“œ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๋Œ€์ฒด ํ…Œ์ŠคํŠธ ์Šคํ… ์ œ๊ณต)์˜ ์š”์†Œ์— ๋Œ€ํ•œ ๋Œ€์•ˆ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์—”์ง„ ์‹œ์ž‘ํ•˜๊ธฐ

์—”์ง„์€ ํ˜ธ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์†Œํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ ์—ฌ๋Ÿฌ๋ถ„ ์ž์‹ ์˜ ์—”์ง„์„ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ํ˜ธ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…œํ”Œ๋ฆฟ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…œํ”Œ๋ฆฟ์€ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ Rails ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๊ธฐ์กด Rails ํ”„๋กœ์ ํŠธ์— ์ ฌ, ์ดˆ๊ธฐํ™” ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ DSL์„ ํฌํ•จํ•˜๋Š” ๊ฐ„๋‹จํ•œ Ruby ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

๋ ˆ์ผ์Šค์˜ ์Šค๋ ˆ๋”ฉ๊ณผ ์ฝ”๋“œ ์‹คํ–‰

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋™์‹œ์„ฑ์„ ์ง์ ‘ ๋‹ค๋ฃฐ ๋•Œ ํ•„์š”ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ๊ณผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์—ฌํ•˜๊ธฐ

Ruby on Rails์— ๊ธฐ์—ฌํ•˜๊ธฐ

Rails๋Š” ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” Rails์˜ ์ง€์†์ ์ธ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

API ๋ฌธ์„œํ™” ๊ฐ€์ด๋“œ๋ผ์ธ

์ด ๊ฐ€์ด๋“œ๋Š” Ruby on Rails API ๋ฌธ์„œ ์ž‘์„ฑ ์ง€์นจ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Ruby on Rails ๊ฐ€์ด๋“œ ์ง€์นจ

์ด ๊ฐ€์ด๋“œ๋Š” Ruby on Rails ๊ฐ€์ด๋“œ ์ž‘์„ฑ์„ ์œ„ํ•œ ์ง€์นจ์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค.

Rails ํ•ต์‹ฌ ๊ฐœ๋ฐœ ์˜์กด์„ฑ ์„ค์น˜

์ด ๊ฐ€์ด๋“œ๋Š” Ruby on Rails ํ•ต์‹ฌ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์ •์ฑ…

์œ ์ง€ ๋ณด์ˆ˜ ์ •์ฑ…

ํ˜„์žฌ ์ง€์›ํ•˜๋Š” Ruby on Rails ๋ฒ„์ „๊ณผ ์ƒˆ ๋ฒ„์ „์˜ ์˜ˆ์ƒ ์ถœ์‹œ ์‹œ๊ธฐ์— ๋Œ€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ

Upgrading Ruby on Rails

This guide provides steps to be followed when you upgrade your applications to a newer version of Ruby on Rails.

Version 7.2 - ?

Ruby on Rails 7.2 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 7.1 - October 2023

Ruby on Rails 7.1 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 7.0 - December 2021

Ruby on Rails 7.0 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 6.1 - December 2020

Ruby on Rails 6.1 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 6.0 - August 2019

Ruby on Rails 6.0 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 5.2 - April 2018

Ruby on Rails 5.2 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 5.1 - April 2017

Ruby on Rails 5.1 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 5.0 - June 2016

Ruby on Rails 5.0 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 4.2 - December 2014

Ruby on Rails 4.2 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 4.1 - April 2014

Ruby on Rails 4.1 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 4.0 - June 2013

Ruby on Rails 4.0 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 3.2 - January 2012

Ruby on Rails 3.2 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 3.1 - August 2011

Ruby on Rails 3.1 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 3.0 - August 2010

Ruby on Rails 3.0 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 2.3 - March 2009

Ruby on Rails 2.3 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.

Version 2.2 - November 2008

Ruby on Rails 2.2 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ.