Есть ли гем, который может записывать данные из и в файлы yml? - PullRequest
0 голосов
/ 21 июня 2010

Я найду такой драгоценный камень целый день, но не найду хорошего.Я хочу написать один, но я не могу это сделать.

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

И у них обоих может быть такой код:

<% xxx %>

Когда я использую rake db:fixtures:load для загрузки их в базу данныхможет возникнуть ошибка: method xxx not found.

Я не хочу найти хороший драгоценный камень, который может решить эту проблему.Спасибо за любую помощь


ОБНОВЛЕНИЕ

Я отказался от поиска такого драгоценного камня.Сначала я думаю, что это простая задача, но теперь, после некоторых исследований, я должен сказать, что это намного сложнее, чем я ожидал.

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Причина, по которой у вас возникли проблемы, заключается в том, что загрузчик Fixture пропустит ваше устройство через erb перед загрузкой данных. Это означает, что если в вашем файле yaml есть <% xxx%>, то Rails увидит это как erb и попытается запустить метод с именем xxx.

Кажется, не существует простого способа отключить эрб-обработку приборов. Я попытался заменить приборы на приборы CSV, и это все еще выполняет предварительную обработку ERB.

Без простого ответа я должен задать вопрос: почему у вас есть эти строки в вашем файле?

Вы хотите, чтобы они были расширены на erb?

1 голос
/ 25 июня 2010

Э-э ... Я не уверен, нужен ли тебе для этого драгоценный камень?Rails изначально может превратить любую модель в YAML.

Допустим, у вас есть модель под названием «Объекты».Вы можете найти маршрут, который выглядит следующим образом:

/objects.yaml

, и вы получите гигантский текстовый файл со всеми вашими Объектами в форме YAML.

Конечно, вы хотели бы иметь что-то вроде:

respond_to do |format|
  format.yaml {render  :yaml => @objects}
end

в вашем контроллере покоя.

Если вы не хотите выбирать маршрут, чтобы сделать это, вы всегда можете сделать

@yaml = []
@objects.each do |object|
@yaml.push object.to_yaml
end

в любом месте ruby, что даст вам массив объектов yaml, которые вы сможете затемпишите в файл на досуге.

Я полагаю, что если бы сам rails генерировал yaml, то он мог бы позже загрузить его как крепеж?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...