Ý định của tôi không phải là so sánh hoặc thảo luận khung nào tốt hơn. Tôi biết sức mạnh từ cả CakePHP và Rails. Tôi chắc chắn rằng có một cách để làm những điều tương tự trong cả hai người trong số họ.Từ Rails 3.2 đến Cake PHP 2.0. Làm thế nào để làm một số nhiệm vụ phổ biến Rails?
Vì vậy, đây là tình huống: trong khung Rails, tôi thường làm những điều mà tôi muốn thực hiện trên CakePHP (một số trong số chúng tôi chưa tìm thấy trong tài liệu).
Đó là:
quản lý gói
Trong Rails, anh có chữ "Gemfile" tập tin, nơi tôi viết các phiên bản của mỗi "viên ngọc" được sử dụng trong ứng dụng. Nếu tôi muốn nâng cấp hoặc hạ cấp, tôi thay đổi phiên bản và chạy lệnh "cập nhật gói". Làm cách nào để cập nhật plugin? Bạn có sử dụng các công cụ như GIT để kiểm tra từng công cụ với các phiên bản mới hơn không?
Migrations
Khi tôi cần phải thay đổi cơ sở dữ liệu, tôi tạo ra một sản phẩm nào "di cư" tập tin thông qua các lệnh điều khiển "đường ray tạo di cư". Sau đó, trong tệp được tạo, tôi thêm các thay đổi, như "rename_column: users,: address,: location". Sau đó, tôi chạy "rake db: migrate" và cơ sở dữ liệu được di chuyển. Làm thế nào để làm điều đó trên CakePHP?
Deployment Automated
triển khai trong Rails có thể được thực hiện tự động bằng cách sử dụng "Capistrano" ruby đá quý. Về cơ bản, tôi chạy "triển khai sản xuất mũ" trong dòng lệnh. Sau đó, dựa trên các hướng dẫn trên tệp "deploy.rb", nó đăng nhập vào (các) máy chủ, sao chép phiên bản mới nhất của mã từ kho git và sao lưu bản phát hành hiện tại, vì vậy tôi có thể khôi phục. Nó cũng có thể tạo các liên kết cho các thư mục "chia sẻ" (như tải lên của người dùng), biên dịch lại các tài sản, chạy di chuyển đang chờ xử lý, cài đặt các phụ thuộc mới, khởi động lại một số quy trình máy chủ, khởi động lại ứng dụng và thực thi các tác vụ dòng lệnh khác. Có gì tương tự trên CakePHP không?
Assets nén
Trong Rails, khi tôi đang ở trong chế độ sản xuất, CSS và tài sản JS sẽ được tự động biên dịch vào file duy nhất, và tái sinh sau mỗi lần triển khai. Đó là một tính năng gốc trong Rails 3.1+. Điều đó có thể xảy ra trên CakePHP không?
Công nhân và Công Việc Bối cảnh
Rails có thể sử dụng một viên ngọc gọi là "delayed_job" để enqueue nhiệm vụ được thực hiện ở chế độ nền bằng "công nhân", như gửi một e-mail sau khi người dùng đăng ký, ví dụ. Làm thế nào để bạn làm điều đó?
Namespaces cho bộ điều khiển
Nếu tôi muốn tạo ra một giao diện quản trị, hoặc một dịch vụ web (sử dụng "api" namespace, chẳng hạn), hoặc một không gian tên "di động", tôi chỉ tạo ra tương ứng thư mục trên thư mục "bộ điều khiển". Sau đó, tôi đặt các bộ điều khiển ở đó và tạo các tuyến để truy cập chúng. Cách tốt nhất để làm điều đó trên Bánh là gì?
mô hình truy cập các phương pháp từ cái nhìn
Dường như CakePHP trả về một mảng kết hợp khi tôi lấy dữ liệu từ cơ sở dữ liệu, và không phải là "đối tượng" true. Vì vậy, tôi không thể truy cập các phương thức mô hình. Giả sử lớp UserModel của tôi cung cấp một phương thức được gọi là "tuổi" để tính tuổi hiện tại của người dùng dựa trên ngày sinh của anh ấy. Trong Rails, tôi có thể làm điều này trên màn hình: <% = @ user.age%>. Tôi cần phải tạo ra một trợ giúp xem để làm điều đó trên bánh? Giống như calc_user_age ($ user); ?> (hoặc một cái gì đó như thế)? Tình huống khác: Giả sử tôi muốn nhận được nhận xét cuối cùng từ người dùng và trong nhận xét, hãy chèn liên kết tới bài đăng có liên quan bằng tiêu đề bài đăng. Trong Rails tôi sẽ làm một cái gì đó như @ user.comments.last.post.title để có được tiêu đề bài viết. Làm thế nào tôi có thể làm điều đó trong Cake, mà không sử dụng tính năng "đệ quy = 3" có nhiều dữ liệu không cần thiết?
Chaining mô hình phạm vi
Giả sử tôi có một mô hình được gọi là Post. Trong Rails, tôi có thể tạo phạm vi trên các mô hình và trộn chúng theo cách tôi muốn. Nếu tôi muốn nhận được "5 bài viết được xuất bản cuối cùng từ danh mục Lập trình được yêu cầu bởi truy cập nhiều nhất", ví dụ, tôi sẽ gọi cho họ theo cách này: "Post.published.from_category (" programming "). Most_accessed.limit (5) ". Nếu tôi chỉ muốn các bài đăng nháp được sắp xếp theo thời gian gần đây, được tích hợp với phân trang, tôi sẽ gọi "Post.drafts.recent.page (2)". Cách tốt nhất để tạo và chuỗi phạm vi trên CakePHP là gì? Xây dựng tự động một loạt các điều kiện và gửi nó như là tham số cho "tìm"?
thử nghiệm
các công cụ kiểm tra chấp nhận bởi hiệp CakePHP là gì? Tôi cần kiểm tra các mô hình và các phương thức của nó, kiểm tra các bộ điều khiển và các đáp ứng và các biến của nó, và kiểm tra nội dung của khung nhìn (cũng tương tác Javascript), tạo các đồ đạc, v.v. Tôi cũng sẽ biết nếu có cách tạo ra một thứ gì đó như tự động, chạy các kiểm tra sau khi lưu tệp.
Vâng, về cơ bản đây là những điểm. Xin lỗi vì bài đăng dài và tiếng Anh dễ bị lỗi và dư thừa của tôi (tôi không phải là người bản ngữ). Ngoài ra, tôi không phải là một chuyên gia. Vì vậy, tôi có thể viết một số thứ sai ở đây.
Hy vọng chúng ta có thể có một cuộc trò chuyện tốt. Cảm ơn bạn!
Hi burzum. Cảm ơn bạn đã trả lời! Chắc chắn tôi sẽ xem xét. Về chủ đề "Truy cập các phương thức mô hình từ chế độ xem", tôi nghĩ rằng tôi chưa đủ rõ ràng. Tôi sẽ không bao giờ truy xuất các mục từ một mô hình trong khung nhìn. Tôi làm điều đó trong bộ điều khiển. Những gì tôi có thể gọi là phương thức "age" trong đối tượng '@ user' được truyền cho khung nhìn, như' @ user.age' (một phương thức tự động tính tuổi người dùng dựa trên ngày sinh nhật của anh ta). –
Viết một trình trợ giúp cho điều đó, nhưng vì đó là một thao tác trên dữ liệu bạn nên thực hiện nó trong phần afterFilter() của IMO mô hình. Tôi có thể hỏi bạn tại sao bạn đánh dấu câu trả lời nghèo nàn, điều đó chỉ trả lời một trong những điểm của bạn, đúng không !? – burzum