Ramaze Simple Tutorial (with Sequel)
흔히들 많이 이용되는 Rails 를 안쓰고 Ramaze + Sequel 조합을 시도해 본 이유는 설치되는 모듈이 정말 적기 때문이다. 너무 많은 의존성을 가지게 되면, 시간이 지날 수록 관리하는데 많은 문제를 읽으킨다. 이 때문에, 원래는 python/Django 를 사용했었는데, python 대신 ruby 를 사용하고 싶어서 대체할만한 웹프레임워크를 찾고 있었다. 그러다가, Ramaze + Sequal 이 초간단으로 설치되는 것을 확인하고, 관련 문서를 찾아보고 테스트했지만 Rails 나 Django 처럼 충분한 문서를 제공하지 않더라. 쓸만한 Tutorial 도 없고 해서, 초간단으로 Tutorial 을 만들어보았다.
- 관련 모듈 설치
$ apt-get install libsqlite3-dev sqlite3 $ gem install ramaze sequel thin sqlite3
- 프로젝트 생성
$ mkdir -p /opt/project/ramaze $ cd /opt/project/ramaze $ ramaze create web
- 기본 웹서버 변경 -> start.rb 에서 :webrick 을 :thin 으로 수정
- 웹서버 시작 테스트
$ ramaze start -s thin or $ ruby start.rb
- db 생성
$ cd /opt/project/ramaze/web $ mkdir -p db/migration $ vi db/migration/001_AdminMigration.rb
# db/gigration/001_AdminMigration.rb # Run: # sequel -m db/migration -M 1 sqlite://db/web.db class CreateAdminsTable < Sequel::Migration def up create_table(:admins) do primary_key :id String :login, :unique => true String :password String :name String :email String :mobile_phone String :level end end def down drop_table(:admins) end end
DB Migration$ sequel -m db/migration -M 1 sqlite://db/web.db
- app.rb 에 다음 추가
# coding : utf-8 require 'sequel' # Open the accounts database DB = Sequel.connect('sqlite://db/web.db') # Initialize controllers and models require __DIR__('model/init') require __DIR__('controller/init') # 아래는 처음 실행할 때 한번만 적용하고 주석으로 막아준다. # Admin.create(:login => 'hong', :password => 'hong1234', :name => '홍길동', :email => 'hong@test.com', :mobile_phone => '010-5555-5555', :level => '00') # Admin.create(:login => 'jang', :password => 'jang1234', :name => '장영실', :email => 'jang@test.com', :mobile_phone => '010-6666-6666', :level => '01')
- model/init.rb 에 다음 추가
require __DIR__('admin')
- model/admin.rb 생성
require 'sequel' class Admin < Sequel::Model end
- controller/init.rb 에 다음을 추가
require __DIR__('admin')
- controller/admin.rb 생성
class AdminController < Controller map '/admin' def index 'Admin Test' end end
- 프로젝트를 실행하고 브라우저에서 http://localhost:7000/admin 을 접근해본다.
- 이제, controller/admin.rb 의 index 를 다음과 같이 변경한다.
def index @admins = Admin.all end
- view 디렉토리 생성
$ cd /opt/project/itsm_ramaze/web/view $ mkdir admin
- view/admin/index.xhtml 생성
<h1> Admin Test Page </h1> <?r @admins.each do |admin| ?> #{admin.login} #{admin.name} #{admin.email} #{admin.mobile_phone} #{admin.level} <br/> <?r end ?>
- 프로젝트를 실행하고 브라우저에서 http://localhost:7000/admin 을 접근해서 데이터 목록이 뜨면 정상이다.
댓글
댓글 쓰기