Как я получаю доступ к своей базе данных направляющих от задачи в lib/задачах?

Я подозреваю, что нет «единственного» способа сделать это. Некоторые HTML-страницы будут объявлять свой язык, многие / большинство не будут. Вам придется придумать некоторую эвристику, которая определяет язык из нескольких методов, и принять решение на основе этой информации.

Может быть, какое-то взвешивание:

  • HTML-объявление = 0,75
  • 90% innerText - это «английский» = 0,50
  • и т. Д. И т. Д. (Можно не думайте о другом тесте)

Затем решите, достигли ли вы разумного значения, что вы говорите «это определенно английский», и пошли.

6
задан Tony 4 April 2009 в 15:30
поделиться

3 ответа

Можно включить задаче Граблей получить доступ моделям путем определения задачи как это:

task :my_task => :environment do
  # Task code
end

Отметьте => :environment, который предоставляет этот доступ. Можно затем сообщить задаче Граблей использовать различные среды этот путь:

rake RAILS_ENV=development my_task
rake RAILS_ENV=production my_task

Что касается сериализации XML, можно использовать встроенное to_xml метод, такой как:

Carrier.all.to_xml

Обратите внимание что метод .all недавнее дополнение к направляющим и псевдоним для .find(:all).

8
ответ дан 9 December 2019 в 20:48
поделиться

Вы на самом деле почти там; я просто рекомендовал бы требовать Вашей среды направляющих как части сценария, как так:

RAILS_HOME = File.expand_path(File.join(File.dirname(__FILE__),"../.."))
RAILS_CONFIG = "#{RAILS_HOME}/config"
require "#{RAILS_CONFIG}/environment"

Теперь у Вас должен быть доступ ко всей Вашей доменной структуре. Направляющие также включают сериализацию XML по умолчанию с помощью to_xml вызов метода; попробовать Carrier.find(:all).to_xml.

2
ответ дан 9 December 2019 в 20:48
поделиться

Условно, lib/задачи обычно резервируется для задач граблей - Вы могли бы хотеть поместить свой код библиотеки в его собственный каталог. lib/обмен сообщениями, возможно?

Вы выполняете старую версию направляющих? find_all не работает в последних версиях: 'найдите (: все)', или просто 'все' - методы в наше время.

File.new("#{RAILS_ROOT}/mls_widget_config.xml", "w") do |f|
  Carrier.all.each { |carrier| f.puts carrier.to_xml }
end
2
ответ дан 9 December 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: