안녕하세요 에이블정보기술 공식블로그지기입니다!
이번 포스팅은 Windows 10에서 Ruby on Rails 개발환경을 구축하는 방법입니다.
추가로 궁금하시거나 오류지적은 댓글 부탁드립니다. 😎
1. 개발환경
2. 설치파일 준비
- 위 파일들을 아래 링크에서 다운로드 하도록 한다.
- – 1434628827_ruby_and_rails.zip
- NetBeans 8.0 탭에서 Download로 받는다.
- – DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
- – mysql-installer-community-5.7.24.0.msi
- – netbeans-8.0.2-php-windows.exe
- HTML5 & PHP 열 아래 Download로 받는다.
- – rubygems-2.7.6.zip
- – rubyinstaller-2.2.1-x64.exe
3. Ruby와 Rails 설치
3.1 Ruby(v2.2.1)
- 윈도우용 Ruby를 사용하기 위해 rubyinstaller-2.2.1-x64.exe를 설치한다.
- 이 글에서의 설치 경로는 C:\Ruby22-x64으로 지정했다.
- 설치 중 반드시 “Add Ruby executable to your PATH”부분에 체크해야 추후 IDE 등에서 운용이 가능하다.
- 설치 후 명령 프롬프트(Win+R, cmd 엔터)로 아래와 같은 명령어를 입력하면 설치된 루비 버전을 볼 수 있다.
-
1234567Microsoft Windows [Version 10.0.17134.556](c) 2018 Microsoft Corporation. All rights reserved.C:\Users\ABLE IT>ruby -vruby 2.2.1p85 (2015-02-26 revision 49769) [x64-mingw32]C:\Users\ABLE IT>
- DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe파일을 열어 아래와 같이 “C:\Ruby22-x64\devkit”에 Exctract하도록 한다.
- 명령 프롬프트에서 C:\Ruby22-x64\devkit로 이동해 ruby로 dk.rb init과 install을 아래처럼 설치한다.
-
1234567891011121314C:\Users\ABLE IT>cd C:\Ruby22-x64\devkitC:\Ruby22-x64\devkit>ruby dk.rb init[INFO] found RubyInstaller v2.2.1 at C:/Ruby22-x64Initialization complete! Please review and modify the auto-generated'config.yml' file to ensure it contains the root directories to allof the installed Rubies you want enhanced by the DevKit.C:\Ruby22-x64\devkit>ruby dk.rb install[INFO] Updating convenience notice gem override for 'C:/Ruby22-x64'[INFO] Installing 'C:/Ruby22-x64/lib/ruby/site_ruby/devkit.rb'C:\Ruby22-x64\devkit>
3.2 Rails(4.2.1)
- Rails란 MVC패턴 기반의 웹 애플리케이션 프레임워크이다.
- 윈도우에서는 Rails를 Gem으로 설치하며, 윈도우용 Gem설치는 rubygems-2.7.6.zip를 이용한다.
- 우선 zip파일을 C:\Ruby22-x64의 경로로 압축을 풀어보자.
- 다시 명령 프롬프트로 돌아와 아래와 같은 명령어로 Gem을 설치하자!
-
1234567891011121314151617181920212223242526272829C:\Ruby22-x64\devkit>cd ..C:\Ruby22-x64>cd rubygems-2.7.6C:\Ruby22-x64\rubygems-2.7.6>ruby setup.rbBundler 1.16.1 installedRubyGems 2.7.6 installedRegenerating binstubsParsing documentation for rubygems-2.7.6Installing ri documentation for rubygems-2.7.6...(중략)------------------------------------------------------------------------------RubyGems installed the following executables:C:/Ruby22-x64/bin/gemC:/Ruby22-x64/bin/bundleRuby Interactive (ri) documentation was installed. ri is kind of like manpages for Ruby libraries. You may access it like this:ri Classnameri Classname.class_methodri Classname#instance_methodIf you do not wish to install this documentation in the future, use the--no-document flag, or set it as the default in your ~/.gemrc file. See'gem help env' for details.C:\Ruby22-x64\rubygems-2.7.6>
- 이제 윈도우에서 Gem을 이용할 수 있다.
- Rails를 설치하기 전, nokogiri를 낮은 버전으로 설치를 해야 별 문제없이 정상적인 Rails설치가 가능하다. nokogiri는 루비에서 HTML, XML등을 파싱하기 위한 라이브러리이며, 우리가 설치한 Ruby 2.2.1에서 사용하려면 아래와 같이 별도로 nokogiri 1.9.1을 설치한다.
-
123456789C:\Ruby22-x64\rubygems-2.7.6>gem install nokogiri -v 1.9.1 --no-ri --no-rdocFetching: mini_portile2-2.4.0.gem (100%)Successfully installed mini_portile2-2.4.0Fetching: nokogiri-1.9.1-x64-mingw32.gem (100%)Nokogiri is built with the packaged libraries: libxml2-2.9.8, libxslt-1.1.32, zlib-1.2.11, libiconv-1.15.Successfully installed nokogiri-1.9.1-x64-mingw322 gems installedC:\Ruby22-x64\rubygems-2.7.6>
- 그럼 본격적으로 Rails를 설치해보자. Rails 설치 명령어는 다음과 같다.
- 정상적으로 설치가 완료되었다면 rails -v명령어로 버전을 확인한다.
-
12345678910111213C:\Ruby22-x64\rubygems-2.7.6>gem install rails -v 4.2.1 --no-ri --no-rdocFetching: concurrent-ruby-1.1.4.gem (100%)Successfully installed concurrent-ruby-1.1.4...(중략)Successfully installed rails-4.2.129 gems installedC:\Ruby22-x64\rubygems-2.7.6>rails -vRails 4.2.1C:\Ruby22-x64\rubygems-2.7.6>
-
위까지 잘 따라왔다면 윈도우에서 Ruby on Rails 프레임워크를 사용할 수 있다!
4. Netbeans IDE를 이용하여 Ruby on Rails 프로젝트 개발 준비
- 여기서부터는 개인의 취향에 맞는 IDE를 골라 사용하면된다. Eclipse, RubyMine 등 본인이 사용하기 좋은 IDE를 사용해도 좋다. 이 글에서는 무료 IDE인 Oracle사의 Netbeans IDE를 사용하였으며 8.0.2 php버전을 기준으로 설명했다.
4.1 Netbeans 설치
- 당연하게도 Netbeans를 설치하려면 윈도우에 Java가 미리 설치되어야한다. 윈도우의 Java설치는 누구나 쉽게 설치할 수 있으므로 생략하도록 한다.(이 글 개발환경에선 jdk 1.8.0을 사전에 설치했다.)
- 우선 설치를 위해 netbeans-8.0.2-php-windows.exe파일을 실행해보자.
- Netbeans 역시 설치과정이 단순하므로 과정은 생략하도록 한다.
4.2 Netbeans용 Ruby on Rails 플러그인 설치
- Netbeans에서 Ruby on Rails 프로젝트를 생성/관리하려면 플러그인이 많이 필요하다.
- 우선 1434628827_ruby_and_rails.zip 파일의 압축을 아래와 같이 C:\Ruby22-x64에 풀어준다.
- 아래 사진과 같이 Downloaded > Add Plugins 에서 org-jruby-jruby.jar파일을 선택하여 우선 설치한다.
- .nbm파일들을 설치하기위해 JRuby가 사전에 설치되어야 하기 때문.
- 다음 .nbm 플러그인들을 위와 같은 과정으로 설치한다. 단, .nbm파일 중 “org-netbeans-modules-jellytools-ruby.nbm”파일은 제외하고 설치한다. jellytools는 의존성 문제로 설치 중 충돌하게되는데, 이를 제외하고 설치해도 무방하다.
- [Next]와 [Continue] 등을 눌러 설치를 하다보면 “Restart IDE Now” 버튼이 나오는데, 클릭하면 Netbeans가 재실행되면서 정상적인 플러그인 설치가 완료된다.
- 여기까지가 윈도우에서 Netbeans IDE를 사용하여 개발 준비 과정이며, 새로운 프로젝트를 생성할 준비가 되었다!
5. Netbeans IDE를 이용하여 Ruby on Rails 프로젝트 생성과 실행
5.1 MySQL 설치
- 이 글에서는 MySQL 5.7.24로 프로젝트 데이터베이스를 연동한다.
- 우선 MySQL을 사용하기위해 mysql-installer-community-5.7.24.0.msi로 설치해야 한다. 윈도우에서 MySQL의 Connector/J 등 윈도우용 라이브러리를 필요로하기 때문이며 실제로 로컬DB서버를 운영하여 프로젝트에서 사용되는 정보들을 처리하기 위함이다.
- 그리고 앞서 언급한대로 mysql-installer-community-5.7.24.0.msi로 윈도우에 MySQL를 설치한다. MySQL 커뮤니티 인스톨의 설치는 타 블로그 등을 참고하면 좋다.
- 구성요소 설치 완료 후 [Next]를 누르다보면 포트설정(3306) 후에 아래와 같이 root비밀번호를 입력받도록 하는데, 적절한 비밀번호를 입력하고 [Next]와 [Continue]를 반복한다.
- 여기서 입력한 root비밀번호는 절대 잊어버리지 말도록 하자.(추후 프로젝트 생성 후 DB연동 시 입력해야한다.)
- “Service Status Changed”라는 윈도우 알림 메시지가 확인 된 후에 [Next]와 [Continue]를 반복하다보면 아래와 같이 방금 전 설정한 root비밀번호를 물어본다. root비밀번호를 입력하고 [Next]와 [Continue]를 반복한다.
- 나머지 과정도 위와 비슷하게 [Next]와 [Continue]로 설치를 최종 완료한다.
- 클라이언트를 실행하여 아래와 같이 “rails_dev” 데이터베이스를 생성한다.
- root비밀번호는 위에서 정한 비밀번호를 입력하면 된다.
-
123456789101112131415161718Enter password: ****Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 8Server version: 5.7.24-log MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database rails_dev-> ;Query OK, 1 row affected (0.01 sec)mysql>
- Ruby에서 MySQL을 사용하기 위해 아래와 gem명령어를 통해 mysql2를 설치한다.
-
12345678910111213141516171819202122C:\Ruby22-x64\rubygems-2.7.6>cd C:\Ruby22-x64C:\Ruby22-x64>gem install mysql2 --no-rdoc --no-riFetching: mysql2-0.5.2-x64-mingw32.gem (100%)======================================================================================================You've installed the binary version of mysql2.It was built using MySQL Connector/C version 6.1.11.It's recommended to use the exact same version to avoid potential issues.At the time of building this gem, the necessary DLL files were retrieved from:http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.1.11-win32.zipThis gem *includes* vendor/libmysql.dll with redistribution notice in vendor/README.======================================================================================================Successfully installed mysql2-0.5.2-x64-mingw321 gem installedC:\Ruby22-x64>
5.2 Netbeans에서 프로젝트 생성
- Netbeans에서 File > New Project를 선택하여 아래와 같이 프로젝트를 생성한다.
- 특히, Ruby Platform은 “Ruby 2.2.1-p85″를 선택하도록 한다.
- 새 프로젝트가 생성되면, Gemfile을 열어 mysql2를 수정하고, nokogiri를 새로 추가한다.
- 아래는 수정/추가된 Gemfile의 내용
-
12345678910111213141516171819202122232425262728293031323334353637383940414243444546source 'https://rubygems.org'# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'gem 'rails', '4.2.1'# Use mysql as the database for Active Recordgem 'mysql2', '~>0.3.18'# Use SCSS for stylesheetsgem 'sass-rails', '~> 5.0'# Use Uglifier as compressor for JavaScript assetsgem 'uglifier', '>= 1.3.0'# Use CoffeeScript for .coffee assets and viewsgem 'coffee-rails', '~> 4.1.0'# See https://github.com/rails/execjs#readme for more supported runtimes# gem 'therubyracer', platforms: :ruby# Use jquery as the JavaScript librarygem 'jquery-rails'# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinksgem 'turbolinks'# Build JSON APIs with ease. Read more: https://github.com/rails/jbuildergem 'jbuilder', '~> 2.0'# bundle exec rake doc:rails generates the API under doc/api.gem 'sdoc', '~> 0.4.0', group: :doc# Use ActiveModel has_secure_password# gem 'bcrypt', '~> 3.1.7'# Use Unicorn as the app server# gem 'unicorn'# Use Capistrano for deployment# gem 'capistrano-rails', group: :developmentgroup :development, :test do# Call 'byebug' anywhere in the code to stop execution and get a debugger consolegem 'byebug'# Access an IRB console on exception pages or by using <%= console %> in viewsgem 'web-console', '~> 2.0'end# Windows does not include zoneinfo files, so bundle the tzinfo-data gemgem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]gem "nokogiri", (RUBY_VERSION <= "2.1" ? "~> 1.9.1" : "~> 1.8.2")
- 번거롭지만 프로젝트의 Gemfile을 수정하면 반드시 명령 프롬프트에서 프로젝트 폴더로 이동하여 “bundle install”을 해야한다.
- (이뿐만이 아니라 나중에 새로운 Gem을 추가할때마다 “bundle install”을 해줘야함)
-
123456789101112C:\Ruby22-x64>cd C:\Users\ABLE IT\Documents\NetBeansProjects\RailsApplication1C:\Users\ABLE IT\Documents\NetBeansProjects\RailsApplication1>bundle installFetching gem metadata from https://rubygems.org/...........Fetching gem metadata from https://rubygems.org/..Resolving dependencies..............Using rake 12.3.2Using concurrent-ruby 1.1.4...(중략)C:\Users\ABLE IT\Documents\NetBeansProjects\RailsApplication1>
- 또 한가지 번거로움이 있다. Netbeans에서 Ruby 2.X의 바이너리 인식을 하지 못하는 경우가 발생한다. 위 상황에서 프로젝트를 실행시키면 script/bin을 찾을 수 없다는 경고가 나오는데, 정답은 간단하다. 프로젝트 폴더의 bin폴더를 그대로 복사하여 그 폴더명을 script로 바꾸기만하면 된다.
<부록>
Ⅰ. RubyMine에서 Ruby on Rails 프로젝트 생성 및 실행
Android Studio, Intellij IDEA, Webstorm,…등을 개발하는 JetBrains에서 Ruby on Rails전용 IDE(유료)를 제공하는데, RubyMine이다. JetBrains에서 생산한 IDE들은 대부분 윈도우/리눅스/맥을 가리지않고 지원하며 RubyMine도 역시 윈도우용 IDE를 제공한다. Netbeans, Eclipse도 훌륭한 IDE이기 때문에 4.에서 언급했던 것과 같이 개발자 스스로 편한 IDE를 선택하면된다. 단 RubyMine은 유료이며, 이 글에서는 30일 무료 평가판(Evaluation)으로 Ruby on Rails 프로젝트를 윈도우에서 생성/실행하도록 한다.
Ⅰ-1. RubyMine 다운로드 및 설치
- RubyMine은 JetBrains 공식 홈페이지에서 운영체제 및 버전별로 다운로드 가능하다.
- JetBrains의 IDE들은 모두 Darcula를 지원한다. 아래 중 마음에 드는 테마를 선택하고 [Next: Keymaps]를 눌러 다음 단계로 넘어가자. (이 글에서는 Darcula로 선택함)
- 이 외에도 Keymaps, default plugins… 등의 설정을 하는데, 중요한 내용은 아니므로 [Next: …]을 눌러 SKIP하면 된다.
Ⅰ-2. Ruby on Rails 프로젝트 생성
- Netbeans에서 프로젝트 처음 생성 시 Gemfile을 수정한것과 같이 RubyMine에서도 Gemfile 수정이 필요하다. 아래 내용을 모두 복사하여 좌측 프로젝트 > Gemfile의 내용을 모두 지운 후 붙여넣는다.
- (아래 Gemfile은 기본 데이터베이스를 MySQL로 지정할 수 있도록 아래 7번 라인 “gem ‘sqlite3′“가 주석처리되고 그대신 9번 라인 “gem ‘mysql2′, ‘~>0.3.18′“가 추가되었으며, 맨 마지막 라인에 “gem “nokogiri”, (RUBY_VERSION <= “2.1” ? “~> 1.9.1″ : “~> 1.8.2″)“가 새로 추가된 내용이다.)
-
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849source 'https://rubygems.org'# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'gem 'rails', '4.2.1'# Use sqlite3 as the database for Active Record#gem 'sqlite3'# MySQLgem 'mysql2', '~>0.3.18'# Use SCSS for stylesheetsgem 'sass-rails', '~> 5.0'# Use Uglifier as compressor for JavaScript assetsgem 'uglifier', '>= 1.3.0'# Use CoffeeScript for .coffee assets and viewsgem 'coffee-rails', '~> 4.1.0'# See https://github.com/rails/execjs#readme for more supported runtimes# gem 'therubyracer', platforms: :ruby# Use jquery as the JavaScript librarygem 'jquery-rails'# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinksgem 'turbolinks'# Build JSON APIs with ease. Read more: https://github.com/rails/jbuildergem 'jbuilder', '~> 2.0'# bundle exec rake doc:rails generates the API under doc/api.gem 'sdoc', '~> 0.4.0', group: :doc# Use ActiveModel has_secure_password# gem 'bcrypt', '~> 3.1.7'# Use Unicorn as the app server# gem 'unicorn'# Use Capistrano for deployment# gem 'capistrano-rails', group: :developmentgroup :development, :test do# Call 'byebug' anywhere in the code to stop execution and get a debugger consolegem 'byebug'# Access an IRB console on exception pages or by using <%= console %> in viewsgem 'web-console', '~> 2.0'end# Windows does not include zoneinfo files, so bundle the tzinfo-data gemgem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]# nokogirigem "nokogiri", (RUBY_VERSION <= "2.1" ? "~> 1.9.1" : "~> 1.8.2")
- 다음은 프로젝트 > config > database.yml 파일의 내용이다. 이미 5.1에서 MySQL을 사용하였기 때문에 여기에서도 MySQL을 사용하도록 했다. 아래 내용 모두 복사하여 기존 database.yml파일에 붙여넣는다.
- (기존 프로젝트는 sqlite3로 잡혀있기 때문에 mysql로 데이터베이스를 바라볼 수 있도록 하는 내용이며, 5.1에서 생성한 DB, username, password로 설정한다.)
-
1234567891011121314151617default: &defaultadapter: mysql2encoding: utf8pool: 20host: 127.0.0.1username: rootpassword: rootdatabase: rails_devdevelopment:<<: *defaulttest:<<: *defaultproduction:<<: *default
- 보통 Gemfile을 추가(혹은 수정)하게되면 명령 프롬프트에서 별도로 “bundle install”을 해야한다.
- 아래와 같이 RubyMine의 좌측 맨 하단에 보이는 “Terminal”을 클릭하면, 윈도우의 명령 프롬프트와 같은 커맨더가 생긴다. “bundle install”을 입력하여 변경된 gem들을 반영한다.
Ⅰ-3. RubyMine에서 Ruby on Rails 프로젝트 실행
- [Shift + F10]으로 Ruby on Rails 프로젝트를 실행하며, 웹 브라우저에서 http://localhost:3000으로 접속한다.
- 정상적으로 실행이 된 모습은 아래와 같다.