2012-06-19 31 views
23

Với ứng dụng lớn của tôi, bảng điều khiển Rails mất một lúc để tải lên. Có cách nào để lệnh đơn dễ dàng hơn không?Chạy các lệnh Rails bên ngoài giao diện điều khiển

Tôi cũng muốn có thể tự động hóa nội dung và echo "query" | rails console không phải là cách tuyệt vời để làm việc.

Suy nghĩ?

EDIT: Còn một quy trình chạy dài mà tôi có thể ping truy vấn đến bất cứ khi nào tôi cần?

+0

Tôi tò mò về trường hợp sử dụng của bạn cho điều này là gì, vì dường như có thể có giải pháp tốt hơn. –

+0

Tôi đang sử dụng Geckoboard để lấy số liệu thống kê từ một ứng dụng đang chạy, sử dụng nguồn cấp dữ liệu JSON Tôi đang thiết lập với các truy vấn này ... Tôi có làm điều đó sai hoàn toàn không? – tekknolagi

+0

Nó có lẽ sẽ có ý nghĩa hơn để chỉ xây dựng mã này ngay vào ứng dụng của bạn và lấy dữ liệu qua HTTP. Nếu đó là thông tin nhạy cảm, thì yêu cầu một số loại ủy quyền, ví dụ: một khóa API với yêu cầu. –

Trả lời

39

Có hai cách chính để chạy các lệnh bên ngoài giao diện điều khiển:

    nhiệm vụ
  1. Rake mà phụ thuộc vào: môi trường
  2. ray Á hậu (trước đây là kịch bản/Á hậu), ví dụ:

    $ ray á quân "truy vấn"

Cả hai đều được ghi lại khá rõ trên hướng dẫn đường ray: http://guides.rubyonrails.org/command_line.html

btw: cả hai phương pháp này sẽ vẫn mất cùng thời gian với bảng điều khiển để kích hoạt, nhưng chúng hữu ích cho các tác vụ không liên quan.

18

Chỉ cần ống nó trong:

echo 'puts Article.count' | bundle exec rails c 

Nó bây giờ nên nhanh hơn rất nhiều so với khi thì câu hỏi được hỏi ban đầu, vì Spring. Nó không phải là ngay lập tức, nhưng vẫn còn nhanh hơn rất nhiều so với quay lên toàn bộ ứng dụng. Sử dụng điều này cho làn nhanh, nó sẽ chạy ở dưới một giây (giả sử lệnh yêu cầu của bạn là nhanh):

echo 'puts Article.count' | spring rails c 

Nếu bạn thực sự muốn có một quá trình dài chạy duy nhất, bạn có thể dễ dàng làm điều đó bằng cách tạo ra một bộ điều khiển hành động chỉ đơn giản là chạy bất cứ điều gì bạn POST cho nó, sau đó gửi lệnh cho nó bằng cách sử dụng curl đằng sau một bí danh. Tất nhiên, hành động này sẽ hoàn toàn không an toàn và cần được bảo vệ gấp ba lần khi chạy ở bất cứ nơi nào gần nơi sản xuất, nhưng sẽ dễ thiết lập.

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