2013-10-29 12 views
5

là có thể sử dụng khung Revel với hỗ trợ hoàn thành mã Go. Theo như tôi biết, tiện ích gocode yêu cầu mã phải được biên dịch thành một thư viện thành một thư mục con pkg để hoạt động, nhưng khung công tác sẽ biên dịch nhanh chóng.Khuôn khổ Revel và hoàn thành mã Go

Tôi đã mất chủ đề. Liệu cách thích hợp có được gọi là cài đặt go cho các gói phụ có liên quan không? Điều đó dường như làm việc nhưng nó không phải là cách thanh lịch nhất để làm điều này từ quan điểm của tôi.

Hy vọng rằng ai đó có thể chỉ cho tôi đúng hướng.

CHỈNH SỬA: vấn đề chỉ tập trung vào các nguồn mà tôi viết như là một phần của ứng dụng Revel của tôi. Các gói đã tải xuống có tự động hoàn thành như mong đợi

EDIT2: Đây là giải pháp tốt nhất mà tôi đã tìm thấy cho đến nay - thực hiện lệnh go get trên thư mục con của bạn là app/tmp của dự án. Vì vậy, nếu dự án của bạn được gọi là my_project thì bạn sẽ gọi một cái gì đó như go get my_project/revel/app/tmp Bởi vì thư mục này chứa hàm chính cho dự án, nó sẽ kéo tất cả các phụ thuộc và xây dựng chúng thành các gói. Nếu thư mục tmp không tồn tại bạn phải làm revel run trên dự án của bạn và mở ứng dụng web của bạn để nó được tạo ra trên bay. Hy vọng điều này sẽ giúp ít nhất một chút. Tôi vẫn mở để có giải pháp thay thế tốt hơn :)

+0

Bạn đang sử dụng gì để viết Go? Sublime Text + plugin GoSublime, ví dụ, sử dụng các gói được cài đặt trên GOPATH của bạn để cung cấp chức năng "tự động hoàn thành" khi bạn thêm vào gói nhập của bạn. Revel, là "go gettable", nên hoạt động theo cùng một cách. – elithrar

+1

Tôi đang sử dụng LiteIDE, GOPATH được đặt thành không gian làm việc của tôi như bình thường. Các gói được cài đặt bằng cách sử dụng go get có tự động hoàn thành. Sự cố xảy ra khi bạn bắt đầu viết ứng dụng Revel. Các nguồn tôi viết không được biên dịch vào thư mục con pkg khi tôi chạy ứng dụng để không có tự động hoàn thành cho mã của tôi. Xin lỗi nếu điều đó không rõ ràng từ bài đăng, tôi sẽ chỉnh sửa nó để làm cho vấn đề rõ ràng. –

Trả lời

0

Ứng dụng phát triển của bạn cần nằm bên trong thư mục $ GOPATH/src của bạn và sau đó hoàn thành mã sẽ hoạt động cho ứng dụng web của bạn.

+0

Nó nằm trong thư mục/src. Tiện ích 'gocode' thực hiện hoàn thành mã dựa trên các thư viện * .a được tạo trong thư mục con/pkg và các biến GOOS và GOARCH xác định thư mục con trong thư mục/pkg nơi 'gocode sẽ xem xét' –

0

Cập nhật

Hoặc là quá trình biên soạn bởi Revel của harness đã thay đổi hoặc gocode đã được cải thiện. Nhưng tất cả mọi thứ hoạt động ngay bây giờ ra khỏi hộp. Không cần thêm nỗ lực nào.

Câu trả lời cũ

Tôi đã gặp phải vấn đề tương tự. Giải pháp của tôi là phiên bản đã sửa đổi của các giải pháp sửa lỗi EDIT 2 của bạn. Trong app/init.go của tôi, tôi nói thêm:

import "os/exec" 

// Build the project packages on app start so it's possible to use autocomplete. 
revel.OnAppStart(func() { 
    if revel.Config.BoolDefault("mode.dev", false) { 
     go func() { 
      _, err := exec.Command("go", "get", "bitbucket.org/USERNAME/PROJECT/app/tmp").Output() 
      if err != nil { 
       revel.ERROR.Printf("failed to 'go get' project, error: %v", err) 
      } 
     }() 
    } 
}) 

Vì vậy, bây giờ trong chế độ dev nó tự động recompiles tất cả các gói trên tất cả các biên dịch lại của dự án Revel.