Я подозреваю, что нет «единственного» способа сделать это. Некоторые HTML-страницы будут объявлять свой язык, многие / большинство не будут. Вам придется придумать некоторую эвристику, которая определяет язык из нескольких методов, и принять решение на основе этой информации.
Может быть, какое-то взвешивание:
Затем решите, достигли ли вы разумного значения, что вы говорите «это определенно английский», и пошли.
Можно включить задаче Граблей получить доступ моделям путем определения задачи как это:
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)
.
Вы на самом деле почти там; я просто рекомендовал бы требовать Вашей среды направляющих как части сценария, как так:
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
.
Условно, 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