Rails 환경설정 및 실제로 프로젝트를 만들어보기!
Rails에 SQLite3를 설치하는 방법은,
$gem install sqlite3-ruby
로 가능합니다. 저번 포스팅에 개발환경을 구성하였는데, 레일즈는 대부분 콘솔(명령행)으로 실행이 됩니다. 또 하나 의문이 생기는 점은 자바나 C#등 다양한 언어들이 통합 툴 (IDE)를 제공하지만 루비나 레일즈는 통합환경 툴이 없습니다. 인텔리센스나 기타 여러 도움을 받는 점은 어렵지만 표현력이 충분하기 때문에 별다른 툴을 사용하지 않습니다.
주변에서 루비쪽 공부를 하시는 분들이 많이 사용하는 'Sublime Text 2' 다운로드 링크는 첨부합니다.
(http://www.sublimetext.com/2)
Rails에는 여러 Database의 사용이 가능합니다만, 스터디는 Sqlite3 위주로 포스팅해나갈 예정입니다.
Rails Applciation은 루비소스코드일뿐입니다. 하지만 레일스는 최소한의 구성 설정으로 많은 마법을 부려줍니다.
새로운 레일즈 프로젝트를 만들어봅시다:)
#Rails 프로젝트 생성
$ rails new testDepot
이란 명령어를 치면 create... 라는 여러 명령행이 뜨며 testDepot이란 폴더와 함께 기본적인 애플리케이션을 생성해줍니다.
만들어진 폴더의 내용을 보면,
Gemfile app doc script
Gemfile.lock config lib test
README.rdoc config.ru log tmp
Rakefile db public vendor
란 파일과 디렉토리들이 생성된 것을 볼 수 있습니다.
테스트로 바로 한번 시작해보면,
#Rails 서버 Start
$ rails server
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2013-03-06 16:45:10] INFO WEBrick 1.3.1
[2013-03-06 16:45:10] INFO ruby 1.9.3 (2012-02-16) [x86_64-darwin12.0.0]
[2013-03-06 16:45:10] INFO WEBrick::HTTPServer#start: pid= port=3000
위와 같은 내용들이 뜨며 로컬호스트 (포트 : 3000)에 생성한 testDepot이란 Rails Applciation이 돌아가는 것을 볼 수 있습니다.
(너무나 간단하고 너무나 빨라 깜짝깜짝 놀랄 때가 많네요)
이렇게 띄운 이후 웹 브라우져를 통해 localhost:3000 으로 접속하면, testDepot으로 만들어진 웹이 뜨게 됩니다:)
위의 명령행 중 Rails 3.2.12 application starting in development on http://0.0.0.0:3000의 0.0.0.0의 의미는 모든 인터페이스의 연결을 받아들인다는 의미입니다. 시스템에 rails만 설치되어 있다면 위와 같이 정상적으로 구동되겠지만, 만약에 다른 서버가 같이 깔려있다면,
$rails server webrick
이란 옵션을 통해 강제로 실행시킬 수 있습니다:)
또한 구동되고 있는 testDepot안에 있는 코드들을 수정해도 재시작을 할 필요는 없습니다:) 레일즈는 똑똑하니까요.
이전 포스팅에서 이야기했듯이, 레일즈는 MVC패턴이기에 'Sublime Text 2'에서 TestDepot을 열어보면, controller부분과 model부분, View부분이 따로 폴더가 생성되어 있는 것을 보실 수 있습니다. (app이란 폴더를 보면)
그럼 이번엔 레일즈의 '생성기 스크립트'를 통해 새로운 컨트롤러를 만들어봅시다.
$rails generate controller say halo bye
라고 쳐봅시다.
create app/controllers/say_controller.rb
route get "say/bye"
route get "say/halo"
invoke erb
create app/views/say
create app/views/say/halo.html.erb
create app/views/say/bye.html.erb
invoke test_unit
create test/functional/say_controller_test.rb
invoke helper
create app/helpers/say_helper.rb
invoke test_unit
create test/unit/helpers/say_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/say.js.coffee
invoke scss
create app/assets/stylesheets/say.css.scss
Jung-ui-iMac:testDepot shakej$
라는 문구와 함께 route와 여러 파일들이 자동적으로 생성되었습니다. 위 명령어는 say라는 컨트롤러를 만들며 그 안에 halo와 bye라는 액션을 만들으라는 명령어입니다. 이런 이후에 파일을 들여다보면, halo와 bye라는 액션이 포함된 say_controller가 생성된 것을 알 수 있습니다:)
app에 controllers를 보면 say_controller라는 것이 생성된 것이 보입니다. 그리고 View모델을 보면 (app/views/
그러면 이제 URL로 localhost:3000/say/helo 로 요청을 해봅시다~!라지만, 아직 View모델쪽을 만져주지 않아 Find me in app/views/say/halo.html.erb라는 문구가 뜰겁니다:)
View쪽 만지는 부분은 다음 포스팅에서 보도록 하겠습니다:)