2010-06-04 9 views
10

Mam projektu Rails 2.3.5, który używa funkcji lokalizacji Rails. Zdaję się też, że zainstalowałem Rails 3 beta (co zależy od klejnotu i18n). Railsy 2.3.5 z łatwością poradzą sobie z lokalizacją (bez zainstalowanego i18n), jednak jeśli gem i18n jest dostępny, korzysta z niego.Mam Rails 2.3.x zignorować gem i18n

Niedawno uaktualniłem moje klejnoty, a teraz zainstalowałem wersję 0.3.7 i 0.4.0 i18n. Railsy oczywiście chcą załadować i używać najnowszej wersji, która powoduje błędy w moim projekcie. Próbowałem ustawić wersję klejnotu na 0.3.7, która omija błędy w aplikacji internetowej. Jednakże używamy resque i resque_mailer, aby opóźnić wysyłanie wiadomości. Kiedy pracownik odbiera zadanie mailera z kolejki, ignoruje moje wymagania config.gem w environment.rb i mimo to używa wersji 0.4.0.

Idealnie, chciałbym powiedzieć Railsowi, aby po prostu nie używał klejnotu i18n. Jak mogę to zrobić?

Aktualizacja: Od wersji beta 4, Rails 3 wymaga teraz wersji i18n 0.4.1. Nie widzę, jak więcej osób nie boryka się z tym problemem, ponieważ wydaje się, że teraz, jeśli masz zainstalowane zarówno Railsy 2, jak i Rails 3, napotkasz na tym.

Odpowiedz

5

I przestrzegać instrukcji jak zdefiniowano tutaj:

http://gembundler.com/rails23.html

i to działało.

+0

Awans do bundler. Odkąd to opublikowałem, bundler przeszedł do wersji 1.0 i stał się znacznie lepszy. Jest bardzo łatwy do skonfigurowania zarówno w projektach Rails 2.3, jak i Rails 3. Jest to rozwiązanie, którego użyłbym w przyszłości. – Jared

+0

Dzięki ... Naprawdę mój problem rozwiązał mój problem. –

3

Możesz użyć Bundler lub Gemsets RVM, aby klejnot i18n był niedostępny z poziomu Twojej aplikacji. Lub możesz uaktualnić swoją aplikację Rails.

+0

Chociaż jest to ważna odpowiedź, nie jest to odpowiedź, której szukam. Używam już RVM, ale wielu nie. Powinien istnieć sposób na całkowite wyeliminowanie tego z poziomu Railsów, jeśli będzie to funkcja Rails. Nie powinieneś instalować i konfigurować RVM, aby móc zarządzać samą funkcją Rails. – Jared

+1

Jest to możliwe z "wewnątrz" Rails 3, ponieważ jest dostarczany z Bundler. RubyGems nie ma możliwości całkowitego wyłączenia Gem. Chociaż można jawnie aktywować starszą wersję i18n, jedynym sposobem na uzyskanie go ze ścieżki obciążenia byłoby w ogóle nie używać rubygemów. –

+1

Możesz także przekonwertować starszy projekt szyn, aby użyć także pękającego klejnotu. Gem bundler ma możliwość wyłączenia klejnotów systemu, opierając się tylko na klejnotach w pakiecie. Ma również znacznie lepsze zarządzanie zależnościami. Czas instalacji: 15 minut –

2
  1. Zamrozić wersję szyn: rake VERSION=2.3.5 rails:freeze:gems
  2. Fix wersji w pliku sprzedawca/szyny/ActiveSupport/lib/active_support/vendor.rb linia 24 do: gem 'i18n', '>= 0.1.3', '< 0.4.0'
+0

Naprawiono błąd, odblokuj i zaktualizuj tory. aktualizacja klejnotów; prowadnice: odmrozić – wingfire

2

czy tylko EDIT: /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor.rb

i skręcić gem 'i18n', '>= 0.1.3'

Do gem 'i18n', '0.1.3'

Powiązane problemy