2015-01-26 2 views
1

У меня есть драгоценный камень, который использует Faker, чтобы помочь строить макет данных. Я хотел бы добавить новый класс, который генерирует новую категорию вещей, используя тот же синтаксис, который сам использует Faker. Первая половина легко, я просто определить класс, и убедиться, что мой драгоценный камень загружает файл:Расширение Faker в камне, где я помещаю файл YAML?

# lib/faker/restaurant.rb 
module Faker 
    class Restaurant < Base 
    class << self 
     def name 
     parse('restaurant.name') 
     end 
    end 
    end 
end 

До сих пор, так хорошо. Теперь, чтобы описать то, что значения могут выйти из этого, я создаю YAML файл:

faker: 
    en: 
    restaurant: 
     suffix: [Cafe,Restaurant] 
     name: 
     - "#{Name.first_name}'s #{suffix}" 

Так, собственно вопрос: Где пройти этот файл, и какое имя он должен иметь? Если это было приложение Rails, оно было бы config/locales/faker.en.yml. В драгоценном камне, который не появляется на работу - есть на самом деле не «конфигурация» каталог, с одной стороны, но его создание для этой цели не помогает, я получаю:

> Faker::Restaurant.name 
I18n::MissingTranslationData: translation missing: en.faker.restaurant.name 
+0

в самом камне фейкера, они находятся в каталоге «locales»: https://github.com/stympy/faker/tree/master/lib/locales – dax

+0

@dax True. Тем не менее, я попытался поставить шахту в '/lib/locales'. – MrTheWalrus

+0

может быть недостающее требование, как в 'lib/faker.rb'? – dax

ответ

1

Ok, догадаться. Особая благодарность dax, чьи комментарии подтолкнули меня в правильном направлении.

Faker использует камень I18n для локализации (поэтому файлы YAML находятся в каталоге «locales»). Это означает, что мне нужно добавить свой пользовательский YAML в путь загрузки I18n. Не имеет значения, где именно находятся файлы, если они добавлены в путь загрузки. В моем случае, я положил его на lib/faker/locales/en-US.yml, и добавил, что весь каталог к ​​пути загрузки, таким образом:

Библиотеки/my_gem.rb:

I18n.load_path += Dir[File.join(File.expand_path(File.dirname(__FILE__)), 'faker/locales', '*.yml')] 
require "faker/restaurant" 

Любых .yml файлы, которые я положил в этом каталоге должны быть загруженным и доступным для Faker.

Примечание стороны: я тоже нужно немного изменить формат YAML - это должно быть

en: 
    faker: 
    <stuff> 

, а не с FAKER на самом высоком уровне, как и я его.