Rails I18n Backend с MongoDB / Mongoid - PullRequest
1 голос
/ 15 марта 2011

Кто-нибудь имеет представление о том, как реализовать это (http://railscasts.com/episodes/256-i18n-backends) с MongoDB / Mongoid? Мой вопрос в первую очередь о файле initializer.rb.

Документы Mongo-I18n на github предлагают следующее с использованием метода MongoI18n :: Store.new:

  collection = Mongo::Connection.new['my_app_related_db'].collection('i18n')
  I18n.backend = I18n::Backend::KeyValue.new(MongoI18n::Store.new(collection)

Но как это сделать, если вы не хотите использовать их плагин? Есть ли что-то вроде метода Mongo :: Store?

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Я только что сделал то же самое, за исключением того, что у меня были проблемы с установкой Mongo-I18n, потому что он зависит от очень старой версии MongoDB.

Чтобы обойти это, я скопировал код из здесь в lib/mongo_i18n.rb.

Вы были на правильном пути с вашим инициализатором, хотя, если вы используете Mongoid - лучший путь вперед - это сделать:

require 'mongo_i18n'
collection = Mongoid.database.collection('i18n')
I18n.backend = I18n::Backend::KeyValue.new(MongoI18n::Store.new(collection))

Что говорит бэкэнду I18n использовать новую коллекцию (называемую i18n), но в той же базе данных, что и остальная часть вашего приложения.

Убедитесь, что вы удалили гем Mongo_I18n из своего файла gemfile и запустили bundle перед тем, как снова запустить сервер.

Вы можете получить доступ к своему магазину напрямую, используя:

I18n.backend.store

Но чтобы сделать его немного чище, я добавил этот метод в свою библиотеку I18n:

# mongo_i18n.rb
def self.store
  collection = Mongoid.database.collection('i18n')
  MongoI18n::Store.new
end

Чтобы я мог получить доступ к магазину напрямую с помощью:

MongoI18n.store
0 голосов
/ 08 апреля 2011

Я сделал в точности так, как сказал theTRON, но вместо того, чтобы требовать 'mongo_i18n', я добавил весь класс MongoI18n :: Store определение из гем Mongo_i18n непосредственно в инициализатор mongo.Это не такая уж большая проблема, потому что весь MongoI18n :: Store занимает 41 строку. Смотри здесь , зачем делать зависимость из 41 строки гема?

...