๐ฉโ๐ป VS ์ฝ๋์์ Rails ๊ฐ๋ฐ์ ํ์ํ ์ธ ๊ฐ์ง ํ์ฅ
10809 ๋จ์ด vscoderailsrubyproductivity
์๋ ํ์ธ์.๐ ์ด์ ์ค์ธ์.์ฌ๊ธฐ์ Ruby ๋ฐ Ruby On Rails์ Visual Studio ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.VS ์ฝ๋๋ ๋ด๊ฐ ์ ํํ ํธ์ง๊ธฐ๋ก ๊ฐ๋ฐ ์ ์ธ๊ณ์์ ์ ์ ์ ํํ๊ณ ์๋ค.2019๋ ์์ Atom extension called Nuclide์ ๋ง๋ ํ์ด์ค๋ถ๋ง์ ๊ท์ ์ด ๊ณกํ ๋ ธ๋ฆ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ ํํ๋ ๋ฃจ๋น์ ๋ฃจ๋น ์จ ๋ ์ผ์ค ํธ์ง๊ธฐ๋ ์๋๋ฐ switched to VSCode์์ ๋ณด๋ฏ์ด Ruby 2019 State of the developer ecosystem.๋ง์ฝ ๋น์ ์ด ์ฌ์ฉํ ์ ์ด ์๋ค๋ฉด, ํ๋ก ์์ ์ ์๊ฒ ์๋ ค์ฃผ์ธ์.
RubyMine
VS ์ฝ๋์ ํ์ฅ์ ๋ฃจ๋น์ ๋ผ์ผ์ค์ ๊ด๋ จ๋ ๊ฒ์ด ๋ง๋ค.๋ด๊ฐ ๋ค ํด ๋ดค๋๋ฐ, ์ด ๊ฒ์๋ฌผ์ด ๋ฐ๋ก ์ฌ๊ธฐ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ๋๋ 10๊ฐ์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ์์ ์ ๋นํ ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์ ํ์๊ฐ ์๋ค.
์ด์ VS ์ฝ๋๋ฅผ ๊ตฌ์ฑํฉ์๋ค!
๋๋ ํ ๋ฆฌ:
Gem Lens
๊ธฐํ ์ ์ฉํ VS ์ฝ๋ ํ์ฅ
Ruby ๋ฐ Ruby On Rails ๋ฐ ์ฝ๋ ํ์ฅ
Ruby์ Rails ๊ฐ๋ฐ์ ์ ๊ฐ ์ ์ผํ๊ฒ ์ฌ์ฉํ๋ ํ์ฅ์
๋๋ค.ํ์ฌ, ๊ทธ๊ฒ๋ค์ ๋์๊ฒ ๊ฐ์ฅ ์ข์ ์ค์ ์ ์ ๊ณตํ๋ค.
์ฐ๋ฆฌ๋ ํ์ํ ๊ณณ์ ํ๋ช
ํ๊ฒ end
๋ธ๋ก์ ์ถ๊ฐํ๊ธฐ ์ํด ํ์ฅ์ ์์ํ๋ค.๋๋ ์ด๊ฒ์ด VS ์ฝ๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ฌ์ค์ ๊ทธ๋ ์ง ์๋ค.๊ทธ ๋ชจ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
endwise
์ด์ ๋ฌด๊ฑฐ์ด ๊ฒ ์ข ๋ด
์๋ค.๋ง์ฝ VS ์ฝ๋๊ฐ ๋ฌด์์ด ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ ๊ฒ์ ์ต์ํด์ก๋ค๋ฉด, Solargraph์ VS ์ฝ๋ ํ์ฅ์ ์ข์ํ ๊ฒ์ด๋ค.
Solargraph๋ MicrosoftRuby Solargraph๋ฅผ ํตํด ์ค๋งํธ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฃจ๋น์ ฌ์ด๋ค.
solargraph.org
Solarograph๋ ๋ ๋ง์ ์ผ์ ํ ์ ์์ต๋๋ค. ์ ๋ ์ด ํ๋ ๋ณดํธ๋ผ๊ธฐ์ ์๋ ํฌ๋งท์ ํนํ ์ข์ํฉ๋๋ค. ์ฐธ๊ณ :
RuboCop
Solargraph ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ํ์ผ์ ์์กด ํญ๋ชฉ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
gem 'solargraph', group: :development
RuboCop ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์กด์ฑ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
gem 'rubocop', group: :development
๋ง์ง๋ง์ผ๋ก, ๋น์ ์ ๊ณ์ ํ ์ ์์ต๋๋ค.
Solargraph๋ฅผ ๋ณด๋ค ์ง๋ฅ์ ์ธ ํธ๋ ์ฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ์ฑ
์ด ํ์ฅ์ Gemfile
์์gem์ ์ค๋ช
๊ณผ ์ต์ ๋ฒ์ ์ ๋น ๋ฅด๊ฒ ๋ณด๋ ค๋ฉด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.๋ณด๊ธฐ:
Gem Lens
ํ ๊ตฌ์ฑ ์ ์ฑ
๊ฐ๋ฐ์๋ก์, ๋์ ๋ชฉํ๋ ๋์ ํธ์ง๊ธฐ๋ฅผ ๊ฐ์ฅ ์ ์ค์ ํ๋ ๊ฒ์ด์ง๋ง, ์ด ์ค์ ์ด ํ๋ก์ ํธ์ ์ ์ฅ๋์ด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ณดํ๋ ๊ฒ์ด๋ค.๋๋ก๋ ์์ฒ๋ฅผ ์
ํ ์๋ ์์ง๋ง, ๊ฐ์ ํญ๋ชฉ์ ๋ชจ๋ ์ฐธ์ฌ์์๊ฒ๋ ๊ฐ์ ํธ์ง๊ธฐ์ ์ค์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.๋ฐ๋ผ์ 10๊ฐ์ ๋ค๋ฅธ ํธ์ง๊ธฐ๋ฅผ ์ค์ ํด์ ์ ๋ณํ๊ณ ํฌ๋งทํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ก๊ทธ๋จ ๊ตฌ์ถ์ ์ ๋
ํ ์ ์์ต๋๋ค.
VS ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๊ฒฐํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
gem 'solargraph', group: :development
gem 'rubocop', group: :development
๊ฐ๋ฐ์๋ก์, ๋์ ๋ชฉํ๋ ๋์ ํธ์ง๊ธฐ๋ฅผ ๊ฐ์ฅ ์ ์ค์ ํ๋ ๊ฒ์ด์ง๋ง, ์ด ์ค์ ์ด ํ๋ก์ ํธ์ ์ ์ฅ๋์ด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ณดํ๋ ๊ฒ์ด๋ค.๋๋ก๋ ์์ฒ๋ฅผ ์ ํ ์๋ ์์ง๋ง, ๊ฐ์ ํญ๋ชฉ์ ๋ชจ๋ ์ฐธ์ฌ์์๊ฒ๋ ๊ฐ์ ํธ์ง๊ธฐ์ ์ค์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.๋ฐ๋ผ์ 10๊ฐ์ ๋ค๋ฅธ ํธ์ง๊ธฐ๋ฅผ ์ค์ ํด์ ์ ๋ณํ๊ณ ํฌ๋งทํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ก๊ทธ๋จ ๊ตฌ์ถ์ ์ ๋ ํ ์ ์์ต๋๋ค.
VS ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๊ฒฐํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ํ๋ก์ ํธ์
.vscode
ํด๋๋ง ๋ง๋ค๋ฉด ๋ฉ๋๋ค.VS Code workspace settings
์ ์ ์ฐ๊ธฐ
์์ ์ดํด๋ณธ ์ธ ๊ฐ์ง ํ์ฅ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
.vscode/extensions.json
{
"recommendations": [
"kaiwood.endwise",
"ninoseki.vscode-gem-lens",
"castwide.solargraph"
]
}
VS ์ฝ๋์์ ํญ๋ชฉ์ ์ฌ๋ ์ฌ๋์ ๋๊ตฌ๋ ๋ณผ ์ ์์ต๋๋ค.์์ ๊ณต๊ฐ ์ค์
VS ์ฝ๋์์ ํญ๋ชฉ์ ๋ํ ์ผ๋ถ ์ค์ ์ ๊ฐ์ ๋ก ์คํํ ์๋ ์์ต๋๋ค.์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์ํด ์ด๋ฌํ ์์ ์ ์ํํฉ๋๋ค.
{
"files.associations": {
"*.html.erb": "html"
},
"[html]": {
"editor.defaultFormatter": "vscode.html-language-features"
},
"editor.formatOnSave": true,
"solargraph.autoformat": true,
"solargraph.diagnostics": true,
"solargraph.formatting": true
}
Solargraph๋ฅผ ์ค์ ํ๋ฉด linting๊ณผ ์๋ ํฌ๋งท, ๊ทธ๋ฆฌ๊ณ .html.erb
์๋ ํฌ๋งท์ด ์งํ๋ฉ๋๋ค.๋ถ์กฑํ ๊ธฐ๋ฅ
ํ์ฌ .*.erb
ํ์ผ์ linting, ๋ฌธ๋ฒ์ ํ์ด๋ผ์ดํธ ๋์คํ๋ ์ด, ์๋ ํฌ๋งท ์ํ๊ฐ ์กฐ๊ธ๋ ์ข์ง ์์ต๋๋ค.๊ทธ๋์ ๋๋ ์ด ํ์ผ๋ค์ ์ถ๋ ฅ ํ์ (HTML, CSS) ์ผ๋ก ๊ฐ์ฃผํ๋ ๊ฐ๋จํ ํด๊ฒฐ ๋ฐฉ์์ ์ ํํ๋ค.์ต์ข
์ ์ผ๋ก
์ ๊ทธPrettier๊ฐ ๊ฐ์ฅ ์ข์ ์ ํ์ด ๋ ์ ์์ผ๋ ์ง๊ธ๊น์งRuby plugin.
ํฌ๋งท์ ์ง์ํ์ง ์์ต๋๋ค.htmlใ์ง์ ์ฌ๊ต์ก๊ตญ
๊ธฐํ ์ ์ฉํ VS ์ฝ๋ ํ์ฅ
๋ค์์ ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์ค์นํ ํ์ฅ์์
๋๋ค.
๋ค์์ ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์ค์นํ ํ์ฅ์์ ๋๋ค.
File Utils ๋ณธ๋ฌธ ์บก์ฒ์ ์ฌ์ฉ๋ ์ฃผ์ .๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ๋งค์ผ ์ฐ๋ ๊ฑฐ
๋ค๊ฐ ์์ด์๋ ์ ๋ ํ์ฅ์ด ์๋๋ฐ, ํนํ Rails?๋์๊ฒ ๋ฉ์์ง๋ฅผ ๋จ๊ฒจ๋ผ, ๋๋ ์ด ๋๊ธ์ ์ ๋ฐ์ดํธํ ๊ฒ์ด๋ค!
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ๊ธ์ ์ข์ํ์ ๋ค๋ฉด ๋ค๋ฅธ ์ฌ๋๊ณผ ๊ณต์ ํ์ธ์.
๋น์ผํธ ์์
@vvoyer
๐ ์ค๋ ์์นจ ์ถํ:๐ฉโ๐ป VS ์ฝ๋Travis CI Status์์ Rails ๊ฐ๋ฐ์ ํ์ํ ์ธ ๊ฐ์ง ํ์ฅ
2019๋ 12์ 2์ผ ์คํ 13:29
dev.to/vvo/the-three-โฆ
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฉโ๐ป VS ์ฝ๋์์ Rails ๊ฐ๋ฐ์ ํ์ํ ์ธ ๊ฐ์ง ํ์ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/vvo/the-three-extensions-you-need-for-rails-in-vs-code-5h7jํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค