Cách tạo 1 database với Lotus Framework v0.5.0
lotusrb
11
Ruby
114
White

My Mai viết ngày 26/10/2015

Lotus đã update với vesion 0.5.0, nhiều tính năng tiện ích được cung cấp, trong đó Lotus đã cập nhật về migration để tạo table rất nhanh và tiện lợi nhé

Ở 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 Update lại cách config database url

Từ folder root truy cập vào file rally.rb để update

adapter type: :file_system, uri: ENV['LEOLEO_DATABASE_URL']

update :file_system thành :sql

adapter type: :sql, uri: ENV['LEOLEO_DATABASE_URL ']

Từ folder root truy cập vào file .env.development & .env.test

LEOLEO_DATABASE_URL ="file_sytem://db/leoleo_test.db"

update :file_system thành :sqlite

LEOLEO_DATABASE_URL="sqlite://db/leoleo_test.db"

Bước 2:

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

  • Tạo ra 1 User Entity. Ở folder entities tạo 1 file user.rb 1 Entity bao gồm các attributes đại diện cho đối tượng User.

alt text

require 'lotus/entity'

class User
  include Lotus::Entity
  attributes :name, :email, :gender, :about, :image_url, :created_at, :updated_at
end

(nếu bạn muốn có trường created_at & updated_at thì define vào nếu ko thì có thể remove)

  • 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/mapping.rb

lotus-model tuân theo data-mapper pattern, nghĩa là cần có một bước đệm ở giữa entity object(Ruby object) và DB. Nhiệm vụ của mapper là kết nối entity attribute với DB table column

  • 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
  attribute :created_at, DateTime
  attribute :updated_at, DateTime
end

3) Truy cập vào folder rallyapp/lib/rallyapp.rb

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

mapping "#{__dir__}/config/mapping"

Và comment out lại đoạn code mapping được viết sẵn

Bước 3: Create 1 database

lotus db create

Bước 4: Generator migrate

lotus g migration create_user

Bước 5: Apply database

lotus db apply

Bước 6: Tạo seeds data

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

UserRepository.clear
20.times do
  user_attr = {
      "name": "Spears Russell",
      "email": "spearsrussell@yogasm.com",
      "gender": 1,
      "about": "I'm Spears",
      "image_url": "http://placehold.it/32x32"
    }
  user = User.new(user_attr)
  UserRepository.persist(user)
end

Bước 7: Đị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

require 'rake'
require 'rake/testtask'
require 'lotus/environment'
require Lotus::Environment.new.env_config

Rake::TestTask.new do |t|
  t.pattern = 'spec/**/*_spec.rb'
  t.libs    << 'spec'
end

task default: :test
task spec: :test

namespace :db do
  task :seed do
    load 'db/seeds.rb'
  end
end

Sau đó chạy lệnh sau:

rake db:seed

Yah!! Xong rồi, cực đơn giản để tạo 1 DB với Lotus v0.5.0

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

33 bài viết.
177 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
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 3 năm trước
21 8
White
19 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 3 năm trước
19 21
White
19 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 gần 2 năm trước
19 9
Bài viết liên quan
White
4 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 3 năm trước
4 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 3 năm trước
8 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
33 bài viết.
177 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á!