2020-12-21(Mon)

  1. ν•™μŠ΅ λ‚ μ§œ // 2020-12-21(μ›”)

  2. ν•™μŠ΅μ‹œκ°„ // 9:00~22:00

  3. ν•™μŠ΅ λ²”μœ„ 및 주제 // Getting started with Rails

  4. λ™λ£Œ ν•™μŠ΅ 방법 // -

  5. ν•™μŠ΅ λͺ©ν‘œ // Getting started with Rails λ‹€ ν›‘κΈ°

  6. 상세 ν•™μŠ΅ λ‚΄μš©

λ£¨λΉ„μ˜¨λ ˆμΌμŠ€ νŠœν† λ¦¬μ–ΌμΈ Getting started with Railsλ₯Ό λΉ λ₯΄κ²Œ ν›‘μ—ˆμŠ΅λ‹ˆλ‹€.

μ•„λž˜μ²˜λŸΌ 과정을 μ •λ¦¬ν•˜λ‹€κ°€ ν•™μŠ΅ 효율이 λ–¨μ–΄μ§€λŠ” κ±Έ λŠκ»΄μ„œ μ •λ¦¬ν•˜λŠ”κ±Έ λ‚΄λ €λ†“μ•˜μŠ΅λ‹ˆλ‹€.

Rails guides

λ£¨λΉ„μ˜¨λ ˆμΌμŠ€ νŠœν† λ¦¬μ–ΌμΈ Getting started with Railsλ₯Ό λΉ λ₯΄κ²Œ ν›‘λŠ”λ‹€.

λ ˆμΌμŠ€λž€?

루비 μ–Έμ–΄λ‘œ μž‘μ„±λœ μ›Ήμ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 ν”„λ ˆμž„μ›Œν¬μ΄λ‹€.

'The Rails Way'λ₯Ό ν•™μŠ΅ν•˜λ©΄ 생산성이 크게 ν–₯상될 것이닀! 'The Rails Way'λŠ” λ‹€μŒ 두 개의 κ°€μ΄λ“œ 원칙을 ν¬ν•¨ν•œλ‹€.

  • Don't Repeat Yourself(DRY)

    λͺ¨λ“  지식은 ν•˜λ‚˜μ˜ μ‹œμŠ€ν…œ μ•ˆμ—μ„œ μœ μΌν•΄μ•Ό ν•˜κ³ , λͺ¨ν˜Έμ„±μ΄ μ—†μ–΄μ•Όν•˜λ©°, κΆŒμœ„λ₯Ό κ°€μ Έμ•Ό ν•œλ‹€.

  • Convention Over Configuration

    λ ˆμΌμ¦ˆλŠ” μ›Ήμ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ‹œ μ΅œμ„ μ˜ 방법을 μ„€μ • λ‚΄μš©μœΌλ‘œ λͺ…μ‹œν•˜μ§€ μ•ŠλŠ”λ‹€, λŒ€μ‹  λ””ν΄νŠΈ μ»¨λ²€μ…˜μœΌλ‘œ μ œμ‹œν•œλ‹€.

레일슀 ν”„λ‘œμ νŠΈ μƒμ„±ν•˜κΈ°

μš°μ„  ruby λ₯Ό μ΅œμ†Œ 2.5.0 이상 λ²„μ „μœΌλ‘œ μ„€μΉ˜ν•˜μž.

mac os μΉ΄νƒˆλ¦¬λ‚˜μ˜ 경우 ruby 2.6.0 버전이 기본으둜 μ„€μΉ˜λ˜μ–΄μžˆλ‹€. ν•˜μ§€λ§Œ 우리 νŒ€μ€ ruby 2.7.1 λ²„μ „μœΌλ‘œ μ§„ν–‰ν•˜κΈ°λ‘œ ν•˜μ˜€μœΌλ―€λ‘œ λ³„λ„λ‘œ μ—…λ°μ΄νŠΈν•˜λŠ” μž‘μ—…μ„ κ±°μ³€λ‹€.

이 λ•Œ κ·Έλƒ₯ brew둜 μ—…λ°μ΄νŠΈν•˜λ©΄ ν™˜κ²½λ³€μˆ˜κ°€ κΌ¬μ΄λŠ” λ“± λŒ€μ°Έμ‚¬κ°€ λ‚  수 μžˆλ‹€κ³  ν•œλ‹€.

루비 버전 관리 RVM κΈ°λ³Έ μ‚¬μš©λ²•μ„ μ°Έκ³ ν•˜μ—¬ RVM(ruby version Manager)을 톡해 μ—…λ°μ΄νŠΈν•˜μž!

μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μƒμ„±ν•œ 뒀에 레일슀 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ쑰에 따라 λ‹€μˆ˜μ˜ 파일과 폴더가 μžλ™ μƒμ„±λœλ‹€. κ°„λ‹¨ν•˜κ²Œ μ •λ¦¬ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

파일/폴더

μš©λ„

app/

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 컨트둀러, λͺ¨λΈ, λ·°, 헬퍼, λ©”μΌλŸ¬, 채널, μž‘μ—… 및 애셋을 ν¬ν•¨ν•œλ‹€.

bin/

앱을 μ‹œμž‘ν•˜λŠ” 레일슀 슀크립트λ₯Ό ν¬ν•¨ν•˜λ©° μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„€μ •, μ—…λ°μ΄νŠΈ, 배포 λ˜λŠ” μ‹€ν–‰ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” 슀크립트λ₯Ό 포함 ν•  수 μžˆλ‹€.

config/

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 라우트, λ°μ΄ν„°λ² μ΄μŠ€ 등을 κ΅¬μ„±ν•œλ‹€. Configuring Rails Applications에 μžμ„Ένžˆ μ„€λͺ…λ˜μ–΄ μžˆλ‹€.

config.ru

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹œμž‘ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” λž™(Rack) 기반 μ„œλ²„μ˜ λž™ ꡬ성. λž™μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ Rack μ›Ή μ‚¬μ΄νŠΈλ₯Ό μ°Έμ‘°ν•œλ‹€.

db/

ν˜„μž¬ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆμ™€ λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

Gemfile Gemfile.lock

이 νŒŒμΌμ„ μ‚¬μš©ν•˜λ©΄ 레일슀 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ μ ¬(gem) μ˜μ‘΄μ„±μ„ μ§€μ •ν•  수 μžˆλ‹€. 이 νŒŒμΌμ€ Bundler μ ¬μ—μ„œ μ‚¬μš©ν•œλ‹€. Bundler에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ Bundler μ›Ή μ‚¬μ΄νŠΈλ₯Ό μ°Έμ‘°ν•œλ‹€

lib/

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μœ„ν•œ ν™•μž₯ λͺ¨λ“ˆ.

log/

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜그 파일

package.json

이 νŒŒμΌμ„ μ‚¬μš©ν•˜λ©΄ 레일슀 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ npm 쒅속성을 μ§€μ •ν•  수 μžˆλ‹€. 이 νŒŒμΌμ€ Yarnμ—μ„œ μ‚¬μš©ν•œλ‹€. Yarn에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ Yarn μ›Ή μ‚¬μ΄νŠΈλ₯Ό μ°Έμ‘°ν•œλ‹€.

public/

λˆ„κ΅¬λΌλ„ μ ‘κΈ‰ν•  수 μžˆλŠ” μœ μΌν•œ 폴더이닀. 정적 파일 및 컴파일 된 애셋을 ν¬ν•¨ν•œλ‹€.

Rakefile

이 νŒŒμΌμ€ μ»€λ§¨λ“œ λΌμΈμ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” νƒœμŠ€ν¬(task)λ₯Ό μ°Ύμ•„μ„œ λ‘œλ“œν•œλ‹€. νƒœμŠ€ν¬ μ •μ˜λŠ” 레일슀의 ꡬ성 μš”μ†Œ 전체에 걸쳐 μ •μ˜λœλ‹€. Rakefile을 λ³€κ²½ν•˜λŠ” λŒ€μ‹  μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ lib/tasks 디렉토리에 νŒŒμΌμ„ μΆ”κ°€ν•œ ν›„ μžμ‹ μ˜ νƒœμŠ€ν¬λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•œλ‹€.

README.md

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ κ°„λ‹¨ν•œ μ‚¬μš© μ„€λͺ…μ„œμ΄λ‹€. 이 νŒŒμΌμ„ νŽΈμ§‘ν•˜μ—¬ λ‹€λ₯Έ μ‚¬μš©μžμ—κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λŠ₯, μ„€μ • 방법 등을 μ•Œλ € μ£Όμ–΄μ•Ό ν•œλ‹€.

storage/

λ””μŠ€ν¬ μ„œλΉ„μŠ€μš© μ•‘ν‹°λΈŒ μŠ€ν† λ¦¬μ§€ 파일. 이에 λŒ€ν•΄μ„œλŠ” Active Storage Overviewμ—μ„œ 닀룬닀.

test/

μœ λ‹› ν…ŒμŠ€νŠΈ, ν”½μŠ€μ³(fixtures, ν…ŒμŠ€νŠΈ 데이터) 및 기타 ν…ŒμŠ€νŠΈ μž₯치. 이것듀은 Testing Rails Applicationsμ—μ„œ 닀룬닀.

tmp/

μž„μ‹œ 파일 (μΊμ‹œ(cache)와 pid 파일).

vendor/

λͺ¨λ“  벀더(타사) μ½”λ“œλ₯Ό μœ„ν•œ μž₯μ†Œμ΄λ‹€. μ „ν˜•μ μΈ 레일슀 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” λ²€λ”μ—μ„œ μ œκ³΅ν•˜λŠ” 젬을 여기에 ν¬ν•¨ν•œλ‹€.

.ruby-version

이 νŒŒμΌμ—λŠ” κΈ°λ³Έ 루비 버전이 ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

"Hello" 문자λ₯Ό ν‘œμ‹œν•˜κΈ° μœ„ν•΄μ„œλŠ” μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ controller(컨트둀러) 와 ν•˜λ‚˜μ˜ view(λ·°) λ₯Ό 생성해야 ν•œλ‹€.

μ»¨νŠΈλ‘€λŸ¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ νŠΉμ • μš”μ²­λ₯Ό λ°›λŠ” 역할을 ν•œλ‹€. Routing(λΌμš°νŒ…) 은 μ–΄λ–€ μ»¨νŠΈλ‘€λŸ¬κ°€ μ–΄λ–€ μš”μ²­μ„ 받을 것인가λ₯Ό κ²°μ •ν•œλ‹€. μ’…μ’… ν•˜λ‚˜μ˜ μ»¨νŠΈλ‘€λŸ¬κ°€ ν•˜λ‚˜ μ΄μƒμ˜ 라우트둜 μ—°κ²°λ˜κΈ°λ„ ν•˜λŠ”λ° 이 λ•Œ νŠΉμ • 컨트둀러의 λΌμš°νŠΈλ“€μ€ 각기 λ‹€λ₯Έ actions(μ•‘μ…˜) 을 ν˜ΈμΆœν•˜μ—¬ μ„œλΉ„μŠ€ν•œλ‹€. μ•‘μ…˜μ€ 정보λ₯Ό λͺ¨μ•„μ„œ 뷰에 μ œκ³΅ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.

λ·°λŠ” μ΄λŸ¬ν•œ 정보λ₯Ό μ‚¬λžŒμ΄ 읽을 수 μžˆλŠ” ν˜•νƒœλ‘œ ν‘œμ‹œν•˜λŠ”λ° μ€‘μš”ν•œ 차이점은 정보λ₯Ό μˆ˜μ§‘ν•˜λŠ” 곳이 λ·°κ°€ μ•„λ‹ˆκ³  컨트둀러 λΌλŠ” 점이닀. λ·°λŠ” λ°”λ‘œ μ΄λŸ¬ν•œ 정보λ₯Ό 단지 ν‘œμ‹œλ§Œν•΄μ•Ό ν•œλ‹€. 보톡 λ·° ν…œν”Œλ¦Ώμ€ eRuby(Embeded Ruby)둜 μž‘μ„±ν•˜λŠ”λ° μ‚¬μš©μžλ“€μ—κ²Œ 보내지기 전에 레일슀 엔진이 μš”μ²­ 주기에 따라 μ²˜λ¦¬ν•˜κ²Œ λœλ‹€.

4.3 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™ˆ νŽ˜μ΄μ§€ μ„€μ •ν•˜κΈ°

webpacker yml β€” ft_transcendence 2020-12-22 09-02-55

νŠœν† λ¦¬μ–ΌλŒ€λ‘œ μ§„ν–‰ν•˜κ³  http://localhost:3000/articles μš”μ²­μ„ λ³΄λ‚΄λŠ” μˆœκ°„ μœ„ 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€!

error Command "webpack" not found 라고 ν•˜μ—¬, μ•„λž˜ μ»€λ§¨λ“œλ₯Ό μž…λ ₯ν•˜μ—¬ webpack을 λ‹€μš΄λ‘œλ“œν•΄λ³΄μ•˜λ‹€.

rails webpacker:install

그런데 μ•„λž˜μ²˜λŸΌ gyp ERR! κ°€ λ°œμƒν•˜μ˜€λ‹€.

gyp_error

μ•„λ‹ˆλ‚˜λ‹€λ₯ΌκΉŒ webpacker μ„€μΉ˜λŠ” μ™„λ£Œλ˜μ—ˆμ§€λ§Œ http://loaclhost:3000/articles μš”μ²­μ΄ μ œλŒ€λ‘œ μ²˜λ¦¬λ˜μ§€ μ•ŠλŠ”λ‹€.

였λ₯˜ λ©”μ„Έμ§€λ₯Ό 찬찬히 읽어보면 Xcode or CLT version 이 κ°μ§€λ˜μ§€ μ•ŠλŠ” 것이 원인인 κ²ƒμœΌλ‘œ μΆ”μ •λœλ‹€.

이λ₯Ό νžŒνŠΈμ‚Όμ•„ κ²€μƒ‰ν–ˆλ”λ‹ˆ macOS μΉ΄νƒˆλ¦¬λ‚˜μ˜ 고질적인 문제둜 보인닀. 링크λ₯Ό μ°Έκ³ ν•˜μ—¬ xcode μ‚­μ œ ν›„ μž¬μ„€μΉ˜λ₯Ό μ§„ν–‰ν•˜μ˜€λ”λ‹ˆ κΉ”λ”ν•˜κ²Œ ν•΄κ²°λ˜μ—ˆλ‹€!

  1. ν•™μŠ΅ λ‚΄μš©μ— λŒ€ν•œ 개인적인 총평

λ„ˆλ¬΄ λͺ¨λ“  것을 μ •λ¦¬ν•˜λ©΄μ„œ ν•™μŠ΅ν•˜λ €λŠ” μŠ΅κ΄€μ„ λ²„λ €μ•Όν•˜λŠ”λ° νŒ€ ν•™μŠ΅μ„ ν•˜λ©΄μ„œ 도진 것 κ°™μŠ΅λ‹ˆλ‹€. λ‹€μ‹œ 가볍고 λΉ λ₯΄κ²Œ ν•™μŠ΅ν•  수 μžˆλ„λ‘ ν•΄μ•Όκ² μŠ΅λ‹ˆλ‹€.

λ‹€μŒ ν•™μŠ΅ κ³„νš

  • λ£¨λΉ„μ˜¨λ ˆμΌμ¦ˆ ν•™μŠ΅

Last updated

Was this helpful?