Ruby on Rails 2.1 - Di chuyển
Rails Migration sử dụng Ruby để xác định các thay đổi đối với lược đồ cơ sở dữ liệu của bạn, giúp bạn có thể sử dụng hệ thống kiểm soát phiên bản để giữ mọi thứ được đồng bộ hóa với mã thực.
Nó có nhiều công dụng, chẳng hạn như -
Nhóm các nhà phát triển - nếu một người thực hiện thay đổi giản đồ, các nhà phát triển khác chỉ cần cập nhật và chạy "di chuyển rake".
Máy chủ sản xuất - chạy "di chuyển rake" khi bạn tung ra bản phát hành mới để cập nhật cơ sở dữ liệu.
Nhiều máy - nếu bạn phát triển trên cả máy tính để bàn và máy tính xách tay hoặc ở nhiều vị trí, việc di chuyển có thể giúp bạn đồng bộ hóa tất cả chúng.
Rails Migration có thể làm gì?
create_table (tên, tùy chọn)
drop_table(name)
rename_table (old_name, new_name)
add_column (table_name, column_name, type, options)
rename_column (table_name, column_name, new_column_name)
change_column (table_name, column_name, type, options)
remove_column (table_name, column_name)
add_index (table_name, column_name, index_type)
remove_index (table_name, column_name)
Migrations support all the basic data types - string, text, integer, float, date-time, timestamp, time, date, binary và Boolean -
string - dành cho các kiểu dữ liệu nhỏ như tiêu đề.
text - dành cho các phần dữ liệu văn bản dài hơn, chẳng hạn như mô tả.
text - dành cho các phần dữ liệu văn bản dài hơn, chẳng hạn như mô tả.
integer - là số nguyên.
float - là số thập phân.
date-time and timestamp - lưu trữ ngày và giờ vào một cột.
date and time - chỉ lưu trữ ngày hoặc chỉ thời gian.
binary - là để lưu trữ dữ liệu như hình ảnh, âm thanh hoặc phim.
boolean - là để lưu trữ các giá trị đúng hoặc sai.
Các tùy chọn cột hợp lệ là -
limit (: giới hạn => “50”)
default (: default => “blah”)
null(: null => false ngụ ý KHÔNG ĐỦ )
NOTE - Các hoạt động được thực hiện bởi Rails Migration có thể được thực hiện bằng bất kỳ GUI front-end nào hoặc trực tiếp trên SQL prompt, nhưng Rails Migration làm cho tất cả các hoạt động đó trở nên rất dễ dàng
Xem API Rails để biết chi tiết về những điều này.
Tạo cuộc di cư
Đây là cú pháp chung để tạo di chuyển -
C:\ruby\application> ruby script/generate migration table_name
Thao tác này sẽ tạo tệp db / migrate / 001_table_name.rb. Tệp di chuyển chứa cú pháp Ruby cơ bản mô tả cấu trúc dữ liệu của bảng cơ sở dữ liệu.
NOTE - Trước khi chạy trình tạo di chuyển, nên làm sạch các di chuyển hiện có được tạo bởi trình tạo mô hình.
Chúng tôi sẽ tạo hai lần di chuyển tương ứng với ba bảng của chúng tôi - books and subjects..
C:\ruby> cd library
C:\ruby\library> ruby script/generate migration books
C:\ruby\library> ruby script/generate migration subjects
Lưu ý rằng bạn đang sử dụng chữ thường cho sách và chủ đề và sử dụng dạng số nhiều khi tạo di chuyển. Đây là mô hình Rails mà bạn nên tuân theo mỗi khi tạo Migration. -
Chỉnh sửa mã để cho nó biết phải làm gì
Truy cập thư mục con db / migrate của ứng dụng của bạn và chỉnh sửa từng tệp một bằng bất kỳ trình soạn thảo văn bản đơn giản nào.
Sửa đổi 001_books.rb như sau:
Cột ID sẽ được tạo tự động, vì vậy đừng làm điều đó ở đây.
class Books < ActiveRecord::Migration
def self.up
create_table :books do |t|
t.string :title, :limit => 32, :null => false
t.float :price
t.integer :subject_id
t.text :description
t.timestamp :created_at
end
end
def self.down
drop_table :books
end
end
Phương pháp self.up được sử dụng khi chuyển sang phiên bản mới, self.downđược sử dụng để khôi phục mọi thay đổi nếu cần. Tại thời điểm này, tập lệnh trên sẽ được sử dụng để tạobooks bàn.
Sửa đổi 002_subjects.rb như sau:
class Subjects < ActiveRecord::Migration
def self.up
create_table :subjects do |t|
t.string :name
end
Subject.create :name => "Physics"
Subject.create :name =>"Mathematics"
Subject.create :name => "Chemistry"
Subject.create :name => "Psychology"
Subject.create :name => "Geography"
end
def self.down
drop_table :subjects
end
end
Tập lệnh trên sẽ được sử dụng để tạo subjectsbàn; nó sẽ tạo ra năm bản ghi trong bảng chủ đề.
Chạy di chuyển
Bây giờ bạn đã tạo tất cả các tệp di chuyển cần thiết, đã đến lúc thực thi chúng trên cơ sở dữ liệu. Để thực hiện việc này, hãy chuyển đến dấu nhắc lệnh và mở thư mục thư viện chứa ứng dụng, sau đó nhậprake migrate như sau -
C:\ruby\library> rake db:migrate
Thao tác này sẽ tạo một bảng "schema_info" nếu nó không tồn tại, bảng này theo dõi phiên bản hiện tại của cơ sở dữ liệu. Mỗi lần di chuyển mới sẽ là một phiên bản mới và mọi quá trình di chuyển mới sẽ được chạy cho đến khi cơ sở dữ liệu của bạn ở phiên bản hiện tại.
Rake là một chương trình xây dựng Ruby tương tự như chương trình tạo Unix mà Rails tận dụng, để đơn giản hóa việc thực thi các tác vụ phức tạp như cập nhật cấu trúc cơ sở dữ liệu, v.v.
Chạy di chuyển cho cơ sở dữ liệu sản xuất và thử nghiệm
Nếu bạn muốn chỉ định môi trường rails nào để sử dụng cho việc di chuyển, hãy sử dụng biến shell RAILS_ENV.
Ví dụ -
C:\ruby\library> set RAILS_ENV=production
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=test
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=development
C:\ruby\library> rake db:migrate
NOTE- Trên Unix, sử dụng "export RAILS_ENV = production" thay cho lệnh set .
Tiếp theo là gì?
Bây giờ chúng tôi có cơ sở dữ liệu của chúng tôi và các bảng cần thiết có sẵn. Trong hai chương tiếp theo, chúng ta sẽ tìm hiểu hai thành phần quan trọng được gọi là Bộ điều khiển (ActionController) và Chế độ xem (ActionView).
- Tạo bộ điều khiển (Bộ điều khiển hành động)
- Tạo chế độ xem (Chế độ xem hành động)