2010-06-04 30 views
10

Tôi có dự án Rails 2.3.5 sử dụng các tính năng bản địa hóa của Rails. Tôi cũng xảy ra để cài đặt Rails 3 beta (phụ thuộc vào đá quý i18n). Rails 2.3.5 sẽ vui vẻ xử lý nội địa hóa trên riêng của nó (không có i18n cài đặt), tuy nhiên nếu đá quý i18n có sẵn, nó làm cho việc sử dụng nó.Có Rails 2.3.x bỏ qua đá quý i18n

Gần đây tôi đã nâng cấp đá quý của mình và hiện đã cài đặt phiên bản 0.3.7 và 0.4.0 của i18n. Rails, tất nhiên, muốn tải và sử dụng phiên bản mới nhất gây ra lỗi trong dự án của tôi. Tôi đã cố gắng thiết lập phiên bản đá quý thành 0.3.7 để tránh các lỗi trong ứng dụng web. Tuy nhiên, chúng tôi đang sử dụng resque và resque_mailer để trì hoãn việc gửi thư. Khi công nhân chọn công việc gửi thư từ hàng đợi, nó bỏ qua yêu cầu config.gem của tôi trong environment.rb và sử dụng phiên bản 0.4.0.

Lý tưởng nhất, tôi muốn nói với Rails không sử dụng đá quý i18n chút nào. Làm thế nào để làm điều đó?

Cập nhật: Kể từ phiên bản beta 4, Rails 3 hiện yêu cầu phiên bản i18n 0.4.1. Tôi không thấy có bao nhiêu người không chạy vào vấn đề này vì nó có vẻ như bây giờ nếu bạn có cả hai Rails 2 và Rails 3 được cài đặt, bạn sẽ chạy vào đây.

Trả lời

5

tôi làm theo hướng dẫn như đã định nghĩa ở đây:

http://gembundler.com/rails23.html

và nó làm việc.

+0

Upvote cho bundler. Vì tôi đã đăng bài này, bundler đã chuyển sang phiên bản 1.0 và trở nên tốt hơn nhiều. Nó rất dễ dàng để thiết lập trong cả hai dự án Rails 2.3 và Rails 3. Đó là giải pháp tôi sẽ sử dụng trong tương lai. – Jared

+0

Cảm ơn ... thực sự là một vấn đề đã giải quyết được vấn đề của tôi. –

3

Bạn có thể sử dụng Bundler hoặc RVM's Gemsets để làm cho đá quý i18n không khả dụng từ bên trong ứng dụng của bạn. Hoặc bạn có thể nâng cấp ứng dụng Rails của mình.

+0

Trong khi đó là một câu trả lời hợp lệ, nó không phải là loại câu trả lời tôi đang tìm kiếm. Tôi đã sử dụng RVM, nhưng nhiều người thì không. Nên có một cách để xử lý hoàn toàn điều này từ bên trong Rails nếu nó là một tính năng của Rails. Bạn không cần phải cài đặt và thiết lập RVM để quản lý một tính năng của chính Rails. – Jared

+1

Điều này có thể thực hiện từ "bên trong" Rails 3 khi nó đi kèm với Bundler. RubyGems không có tùy chọn để vô hiệu hóa một Gem hoàn toàn. Trong khi bạn có thể kích hoạt một phiên bản cũ hơn của i18n, cách duy nhất để lấy nó ra khỏi đường dẫn tải của bạn là không sử dụng rubygems chút nào. –

+1

Bạn cũng có thể chuyển đổi một dự án đường ray cũ hơn để sử dụng gói đính kèm gem. Gem bundler có khả năng vô hiệu hóa các gem hệ thống, chỉ dựa vào các gem trong bundle. Nó cũng có quản lý phụ thuộc cao cấp hơn nhiều. Thời gian thiết lập: 15 phút –

2
  1. Freeze phiên bản ray: rake VERSION=2.3.5 rails:freeze:gems
  2. Fix phiên bản trong các nhà cung cấp tập tin/ray/activesupport/lib/active_support/vendor.rb dòng 24 đến: gem 'i18n', '>= 0.1.3', '< 0.4.0'
+0

Lỗi được cố định sao cho không cố định và cập nhật đường ray. cập nhật đá quý; cào ray: unfreeze – wingfire

2

Hoặc chỉ cần chỉnh sửa: /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor.rb

Và biến gem 'i18n', '>= 0.1.3'

Into gem 'i18n', '0.1.3'

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