2010-04-14 23 views
6

Có cách nào dễ dàng để xem SQL thực tế được tạo ra bởi di chuyển đường ray không?Cách để xem đầu ra Rails Migration

Tôi có một tình huống mà việc di chuyển để thay đổi loại cột hoạt động trên máy phát triển cục bộ của tôi bằng cách thất bại một phần trên máy chủ sản xuất.

Các phiên bản postgreSQL khác nhau giữa địa phương và sản xuất (7 trên sản xuất, 8 trên địa phương) nên tôi hy vọng bằng cách xem SQL được tạo trên di chuyển thành công cục bộ, tôi có thể tạo câu lệnh SQL để chạy trên sản xuất sửa chữa mọi thứ ....

Trả lời

3

tôi đã làm một số đào và tìm thấy một cách khác này có thể đạt được quá ... (cách này chỉ cung cấp cho bạn các SQL vì vậy nó là một chút dễ dàng hơn cho tôi để đọc)

PostgreSQL sẽ ghi lại tất cả các truy vấn thực hiện nếu bạn đặt dòng này trong tập tin cấu hình của bạn: (có một ví dụ mà đã được nhận xét ra trong "gì để đăng nhập" của tập tin cấu hình)

log_statement = 'all' 

sau đó, tôi cuộn lại và tái chạy di cư của tôi tại địa phương để tìm SQL tôi đang tìm kiếm.

Phương pháp này cũng cung cấp cho bạn SQL ở định dạng mà bạn có thể dễ dàng dán nó vào thứ gì đó giống như trình tạo truy vấn của PGAdmin và gây rối với nó.

+0

Cảm ơn vì điều này. Tôi ngạc nhiên không có cách nào để làm điều này. –

6

Xem các tệp nhật ký: log/development.log tại địa phương so với log/production.log trên máy chủ của bạn.

+0

Cảm ơn Francois! Đề xuất của bạn hoạt động tốt nhưng tôi gặp một số rắc rối khi logfile của tôi là HUGE và hơi khó phân tích ... Tuy nhiên, bạn đã nhắc tôi về điều tôi đã đọc trước đây về logfile của PostgreSQL và tôi đã tìm ra giải pháp những gì tôi đang tìm kiếm. +1 –

0

Bạn có thể đặt trình ghi nhật ký thành STDOUT ở đầu các phương thức change, up hoặc down di chuyển của bạn. Ví dụ:

class SomMigration < ActiveRecord::Migration 
    def change 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 

    # ... 
    end 
end 

Hoặc xem this answer để thêm SQL khai thác gỗ cho tất cả các nhiệm vụ cào

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