Cách tạo 1 database với Lotus Framework
lotusrb
11
Ruby
119
White

My Mai viết ngày 28/05/2015

Tiếp tục bài viết lần trước về Bắt đầu một application với Lotus Framework chúng ta sẽ tìm hiểu thêm từng bước để xây dựng được 1 ứng dụng. Ở bài này mình xin đi vào việc sử dụng sqlite để tạo database, áp dụng lotus-model để tạo entity, sử dụng repository để giao tiếp với database và mapping dữ liệu.

Mình sẽ tạo ra 1 seeds database về users

Install ở Gemfile

group :development, :test do
  gem 'sqlite3'
end

Bước 1 Tạo database

Vào folder root rallyapp tạo file database.rb

require "sqlite3"

# Tạo mới database sử dụng SQLite3
db = SQLite3::Database.new 'rallyapp_development.db'

rows = db.execute <<-SQL
  create table users (
    name varchar(255),
    email varchar(255),
    gender int,
    about text,
    image_url varchar(255)
  );
SQL

Bước 2 Update database url

Vào file rallyapp/config update file .env.development để update url thành

RALLYAPP_DATABASE_URL="sqlite://db/rallyapp_development"

thay vì sử dụng

RALLYAPP_DATABASE_URL="file:///db/rallyapp_development"

Bước 3:

1) Truy cập vào folder rallyapp/lib/rallyapp

  • Tạo ra 1 User Entity. Ở folder entities tạo 1 file user.rb 1 Entity bao gồm các attributes giống như các fields trong User model.

alt text

require 'lotus/entity'

class User
  include Lotus::Entity
  attributes :name, :email, :gender, :about, :image_url
end
  • Tạo ra 1 User Repository Ở folder repositories tạo 1 file user.rb Repository nó cung cấp một API chuẩn để truy vấn và thực hiện các xử lý trên một cơ sở dữ liệu
require 'lotus/repository'

class UserRepository
  include Lotus::Repository
end

2) Truy cập vào folder rallyapp/lib/config. Ở file mapping.rb

  • Mapping kiểu dữ liệu của attributes ``` collection :users do entity User repository UserRepository

attribute :id, Integer
attribute :name, String
attribute :email, String
attribute :gender, Integer
attribute :about, String
attribute :image_url, String
end


**3) Truy cập vào folder rallyapp/lib Tại file rallyapp.rb**

Các bạn mở dòng comment. Sử dụng mapping này

mapping "#{dir}/config/mapping"

Và comment lại phần mapping trực tiếp tại file. [Xem code tại github để biết rõ hơn](https://github.com/mymai91/lotus-rally-app/tree/create-database)

### Bước 4 Viết migration để tạo connect database

Vào file rallyapp/lib/rallyapp
Tạo 1 file migrator.rb

```ruby
require_relative '../../config/environment'

module Leoleo
  class Migrator
    require 'sequel'
    def self.migrate!
      db = Sequel.connect(ENV['LEOLEO_DATABASE_URL'])
    end
  end
end

Bước 5: Tạo seeds data

Vào rallyapp/db Tạo file seeds.rb
Update data seeds vào seeds.rb

[
  {
    "name": "Spears Russell",
    "email": "spearsrussell@yogasm.com",
    "gender": 1,
    "about": "I'm Spears",
    "image_url": "http://placehold.it/32x32"
  },
  {
    "name": "Ann York",
    "email": "annyork@yogasm.com",
    "gender": 1,
    "about": "I'm Ann York",
    "image_url": "http://placehold.it/32x32"
  }
].each do |user_attrs|
  user = User.new(user_attrs)
  UserRepository.persist(user)
end

Bước 6: Định nghĩa một task ở rake file để run migration

Truy cập vào rallyapp/Rakefile
Add task này vào file Rakefile

namespace :db do
  task :migrate do
    require_relative 'lib/rallyapp/migrator'
    RallyApp::Migrator.migrate!
  end

  task :seed => [:migrate] do
    load 'db/seeds.rb'
  end
end

Sau đó chạy lệnh sau:

bundle exec rake db:seed

Cảm ơn các bạn đã đọc. Hy vọng qua bài này giúp bạn hiểu thêm về Lotus Framework
Bài tiếp theo sẽ là bài hướng dẫn cách tạo API với Lotus Framework
Các bạn xem code chi tiết tại đây

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

My Mai

34 bài viết.
209 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
25 21
Bạn muốn load 3 image khác nhau (Ý mình ở đây là dùng tag không phải background nhé) cho 3 loại màn hình khác nhau (small, medium, large). Bạn sẽ l...
My Mai viết hơn 5 năm trước
25 21
White
21 8
Lotus là gì? (Link) là một Ruby Web Framework mới với chú trọng vào cấu trúc tách rời với thiết kế đơn giản và dễ hiểu. Hiện tại thì Lotus vừa re...
My Mai viết hơn 5 năm trước
21 8
White
20 9
Tham gia cộng đồng Thoáng đó cũng đã 2 năm từ lúc tớ tham gia cộng đồng Ruby Việt Nam. Giờ ngồi ngẫm lại được gì và mất gì :v Thật thì chẳng mất...
My Mai viết 4 năm trước
20 9
Bài viết liên quan
White
5 2
__Chú thích__: Đây là bản dịch tiếng Việt của bài viết gốc của tôi. Nếu bạn muốn xem bản tiếng Anh, xin hãy trỏ tới URL (Link) Lời mở (Link) là ...
Lơi Rệ viết hơn 5 năm trước
5 2
White
8 1
Tiếp tục bài viết lần trước về (Link) & (Link) bây giờ chúng ta sẽ tìm hiểu thêm cách tạo API từ Lotus Framework. Tại sao lại sử dụng Lotus để tạ...
My Mai viết hơn 5 năm trước
8 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
34 bài viết.
209 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!