2008-09-19 41 views
18

Có dễ dàng cài đặt/sử dụng (trên Unix) các công cụ di chuyển cơ sở dữ liệu như Rails Migrations không? Tôi thực sự thích ý tưởng, nhưng cài đặt ruby ​​/ ray hoàn toàn để quản lý di chuyển cơ sở dữ liệu của tôi có vẻ quá mức cần thiết.Di chuyển cơ sở dữ liệu giống như Rails?

Trả lời

22

Chỉ cần sử dụng ActiveRecord và một tệp Rakefile đơn giản. Ví dụ, nếu bạn đặt di cư của bạn trong một thư mục db/migrate và có một tập tin database.yml có cấu hình db của bạn, Rakefile đơn giản này nên làm việc:

Rakefile:

require 'active_record' 
require 'yaml' 

desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x" 
task :migrate => :environment do 
    ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil) 
end 

task :environment do 
    ActiveRecord::Base.establish_connection(YAML::load(File.open('database.yml'))) 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 
end 

database.yml:

adapter: mysql 
encoding: utf8 
database: test_database 
username: root 
password: 
host: localhost 

Sau đó, bạn sẽ có thể để chạy rake migrate và có tất cả sự tốt lành di cư mà không có một surr ounding đường ray ứng dụng.

Ngoài ra, tôi có một tập lệnh bash thực hiện chức năng rất giống với di chuyển ActiveRecord, nhưng chúng chỉ hoạt động với Oracle. Tôi đã từng sử dụng chúng trước khi chuyển sang Ruby và Rails. Họ có phần phức tạp và tôi không hỗ trợ cho họ, nhưng nếu bạn quan tâm, hãy liên hệ với tôi.

1

Tôi chưa đích thân làm điều đó, nhưng có thể sử dụng ActiveRecord :: Migration mà không có bất kỳ nội dung nào khác của Rails. Thiết lập đường dẫn tải chính xác sẽ là phần khó, nhưng thực sự tất cả những gì bạn cần là các nhiệm vụ rake và thư mục db/migrate cộng với bất kỳ đá quý nào mà chúng phụ thuộc vào, có lẽ là activerecord, actviesupport và có thể một số khác như railties. Tôi sẽ thử nó và chỉ xem những gì lớp bị thiếu và thêm những người trong.

Tại một công ty trước đây, chúng tôi đã xây dựng một công cụ về cơ bản những gì ActiveRecord :: Migration thực hiện, ngoại trừ nó được viết bằng Java như một plugin Maven. Tất cả nó đã được lắp ráp các đốm màu văn bản của các kịch bản SQL. Nó chỉ cần được thông minh về tên tập tin đi theo thứ tự và biết làm thế nào để cập nhật một phiên bản bảng.

4

Ngoài ra còn có một dự án được gọi là Java Database Migrations. Để lấy mã, hãy kiểm tra số Google Code page for the project.

+0

Trông thú vị, nhưng tôi không thể tìm thấy việc tải xuống cho nó? –

+0

Dường như có ít nhất kho lưu trữ nguồn. Tôi đã chỉnh sửa câu trả lời gốc để hiển thị mà không cần mở rộng nhận xét. Hy vọng điều đó sẽ hữu ích. – Otto

+0

"Dự án này hiện không có tải xuống." :( –

3

Tôi thấy chủ đề này thực sự cũ, nhưng tôi sẽ tiếp tục phát triển cho các googlers trong tương lai.

Tôi thực sự thích sử dụng SQLAlchemy của Python và SQLAlchemy-Migrate để quản lý cơ sở dữ liệu mà tôi cần để kiểm soát phiên bản, nếu bạn không muốn đi tuyến ActiveRecord :: Migrate.

+0

Có vẻ thú vị, cảm ơn –

1

Dự án này được thiết kế để cho phép di cư kỷ lục hoạt động được chạy mà không cần cài Rails:

https://github.com/bretweinraub/rails-free-DB-Migrate

Cài đặt nó (git clone nó) và sử dụng nó như một cơ sở cho dự án của bạn.

Các vấn đề liên quan