2009-11-29 25 views
8

Tôi hiện đang sử dụng Dreamhost để chạy ứng dụng Rails 2.3.5.Bỏ qua lỗi phiên bản giá bằng Rails 2.3.5

Đây là tình huống, máy chủ của Dreamhost đã cài đặt Rails 2.2.2. Tất nhiên, tôi không thể cập nhật phiên bản đường ray của máy chủ chia sẻ, vì vậy tôi đã đóng băng Rails của mình trong nhà cung cấp. Rails 2.3.5 yêu cầu đá quý rack v1.0.1. Dreamhost sử dụng đá quý rack v1.0.0. Vì vậy, khi tôi cố gắng để xác định:

config.gem "rack", :version => "1.0.1" 

tôi nhận được:

can't activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for [] 

Vì vậy, những gì tôi thực sự cần phải làm là bỏ qua yêu cầu ứng dụng của tôi sử dụng 1.0.1, và sử dụng Dreamhost của 1.0.0. Có ai biết làm thế nào để cấu hình này? Thậm chí có thể không? Cảm ơn đã giúp đỡ.

+0

Có thể giúp yêu cầu hỗ trợ nâng cấp giá đỡ (và đường ray)? – dhofstet

+0

dhofstet - thật đáng buồn - họ khá miễn cưỡng làm bất cứ điều gì để giúp giải quyết vấn đề này. Họ có thể di chuyển bạn đến các máy chủ mới sử dụng phiên bản mới hơn của đường ray/giá/hành khách mà tôi được cho biết sẽ giải quyết được sự cố. –

Trả lời

0

Bạn hầu như luôn muốn giải nén các viên đá quý mà ứng dụng của bạn phụ thuộc vào thư mục vendor. Bạn có thể làm điều đó với lệnh này rake:

rake gems:unpack:dependencies 

này sẽ tạo ra một thư mục vendor/gems dưới thư mục gốc của ứng dụng của bạn và giải nén tất cả các đá quý mà bạn khai báo với lệnh config.gem vào nó.

Điều này sẽ không chỉ giải quyết vấn đề của bạn với các phiên bản rack không khớp, mà còn đảm bảo rằng bạn đang sử dụng cùng một phiên bản đá quý giống như đang sử dụng trong quá trình phát triển.

+1

đá quý cào: giải nén: phụ thuộc không đặt giá trong nhà cung cấp/đá quý, bất kỳ ý tưởng tại sao? – Pablo

+1

Tôi đang gặp vấn đề tương tự như người hỏi và khi tôi cố gắng chạy 'rake đá quý: giải nén: phụ thuộc' là khi tôi nhận được thông báo lỗi mà ông mô tả ... tức là tôi không thể giải nén các phụ thuộc ... bởi vì nó phàn nàn về rack là phiên bản sai: P –

1

Tôi đã gặp sự cố tương tự khi tôi thử nâng cấp lên 2.3.5.

Tôi tự hỏi bạn đang sử dụng máy chủ nào vẫn chạy Rails 2.2.2? Tôi nghĩ Dreamhost đã chuyển mọi người đến 2.3.4 ngay bây giờ. Tôi phàn nàn với họ cách đây 3 tháng và họ nâng cấp Hành khách trên máy chủ của tôi vào ngày hôm sau để tôi có thể cài đặt phiên bản Rails hiện tại. Vì vậy, tôi khuyên bạn nên gửi một vé hỗ trợ nếu Rails 2.3.5 là yếu tố quan trọng cho ứng dụng của bạn. Nhưng không có nhiều thay đổi giữa 2.3.4 và 2.3.5, vì vậy rất có thể ứng dụng của bạn cũng sẽ chạy tốt trên 2.3.4. Bạn đã thử chạy nó trên vendored 2.3.4?

Đây không phải về đá quý còn thiếu, đó là về đá quý đang được yêu cầu hai lần với các phiên bản không khớp. đá quý rake: giải nén: phụ thuộc không khắc phục được điều đó (tôi đã thử).

Tôi nghi ngờ đó là sự cố với phiên bản Hành khách của Dreamhost. Máy chủ của tôi (buenosaires) có Hành khách 2.2.5. Phiên bản Hành khách mới nhất là 2.2.7.

0

FWIW, tôi có thể xác nhận rằng việc đóng băng đá quý không giải quyết được vấn đề; trên thực tế, nơi trước khi triển khai của tôi bùng nổ (sử dụng Giá của DH 0.3.0, bằng cách nào đó!), bây giờ spin-up của tôi bị thổi bay với cùng một lỗi được thấy ở trên. Có lẽ đó là thời gian cuối cùng để di chuyển đồ chơi của tôi/bằng chứng của khái niệm ứng dụng để lưu trữ 'thực' nếu tôi muốn nhận được bất kỳ công việc làm.

CẬP NHẬT: Máy chủ của tôi đã được nâng cấp lên Rack 1.0.1 vào ngày 24 tháng 12 năm 2009, giải quyết vấn đề cho tôi. Nếu bạn vẫn gặp sự cố trong tài khoản của mình, tôi khuyên bạn nên hỗ trợ nhắn tin; họ đã khá nhạy cảm trong trường hợp của tôi (với email, không hành động, nhưng với mức giá bạn thực sự không thể có tất cả).

+1

Tôi đã kết thúc đóng băng đường ray 2.3.4 để phụ thuộc của tôi là rack 1.0.0. Kinda hút phải đứng ngoài lề, nhưng nó giải quyết được vấn đề. – Matthew

4

rake gems:unpack:dependencies không cho phép bạn giải nén cào vào thư mục nhà cung cấp/đá quý của mình.

Đối với vấn đề Dreamhost, bạn phải làm những gì Matt nói. Đóng băng đường ray đến 2.3.4.

rake rails:freeze:gems VERSION=2.3.4 

Dreamhost sử dụng phiên bản cũ hơn của Hành khách tải trước giá vé 1.0.0. Bạn không thể tải giá 1.0.1 một khi giá 1.0.0 đã được tải trước. Do đó, phiên bản mới nhất của đường ray có thể cho DH là Rails 2.3.4 và Rack 1.0.0.

0

Tôi nghĩ rằng tại thời điểm tốt nhất sẽ là để giải phóng mọi thứ và sử dụng những gì trên dreamhost. Hiện tại họ có đường ray 2.3.4 và nếu bạn có thể đợi một hoặc hai ngày - dreamhost sẽ nâng cấp đường ray lên 2.3.5 (nó đã được nâng cấp ngày hôm qua vào ngày 21 tháng 12), nhưng vì lý do nào đó họ không giải thích được vẫn còn trên 2.3.4).

+0

Đáng buồn thay, đó là ngày 12 tháng 3 và vẫn không hoạt động đối với tôi ... –

6

Dreamhost đã giải quyết vấn đề này trên wiki hỗ trợ của họ ngay bây giờ.

http://wiki.dreamhost.com/Ruby_on_Rails#Rails_2.3.5_-_Rack_1.0_already_activated_.28fix.29

Từ trang đó:

Khi sử dụng Rails 2.3.5 bạn sẽ nhận được một vấn đề từ hành khách nói Kệ 1.0.1 không thể được nạp bởi vì rack 1.0 đã được kích hoạt.

Một cách để giải quyết điều này bằng cách đóng băng Rails và giải nén ngọc rack vào vendor/đá quý/rack-1.0.1

Khi Rails và rack là trong các nhà cung cấp/đường ray và nhà cung cấp/đá quý/rack-1.0 .1 bạn phải sửa đổi action_controller trong file: vendor/ray/actionpack/lib/action_controller.rb

trong số dòng 34 và 35 phải được nhận xét ra và thêm dòng sau vào tải giá từ nhà cung cấp/đá quý

load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb" 

Kết quả cuối cùng sẽ trông giống như sau:

#gem 'rack', '~> 1.0.1' 
    #require 'rack' 
    load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb" 

Vấn đề thực tế là Hành khách đã tải Rack 1.0 và tôi tin Hành khách phải tải 1.0.1 để hack này biến mất.

1

Bản cập nhật đá quý đơn giản của giá không hoạt động đối với tôi vì có vẻ như Rails 2.3.5 muốn Rack 1.0.1 đặc biệt. Vì vậy, khi tôi đã làm một cập nhật đá quý rack -v = 1.0.1, Rails 2.3.5 bắt đầu phải lên.

+0

Tôi nghĩ điều này đã hiệu quả vì Dreamhost đã cập nhật đá quý của họ kể từ khi câu hỏi này được tạo để bao gồm Rack 1.0.1. Đây không phải là vấn đề nữa do bản cập nhật đó. – Matthew

1

Rõ ràng toàn bộ điều này với Rails muốn giá 1.0.1 là một lỗi yêu cầu phụ thuộc nhỏ trong actionpack có thể được giải quyết khá dễ dàng.

Đối với tôi, điều đó là đủ để chỉnh sửa vendor/rails/actionpack/lib/action_controller.rb trên dòng 34 từ gem 'rack', '~> 1.0.1' đến gem 'rack', '~> 1.0' và sự cố đã biến mất.

Xem: https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/3685-actionpack-235-gem-declares-incompatibility-with-rack-110

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