namespace :sync do
task :all, [:host] => :environment do |t, args| require 'iqvoc' if Iqvoc.config["triplestore.url"] == Iqvoc.config.defaults["triplestore.url"] # XXX: duplicates controller puts I18n.t("txt.controllers.triplestore_sync.config_warning") fail end ROOT = args[:host] raise(ArgumentError, "host not specified") unless ROOT include Rails.application.routes.url_helpers default_url_options[:host] = ROOT class FakeController include RdfSyncService::Helper delegate :url_helpers, :to => "Rails.application.routes" def root_url(*args) ROOT end def view_context(*args) default_url_options[:host] = root_url view = FakeView.new(Rails.root.join("app", "views")) view.controller = self return view end # delegate URL helpers def method_missing(name, *args, &block) url_helpers.send(name, *args, &block) end end class FakeView < ActionView::Base include ApplicationHelper attr_accessor :controller # delegate URL helpers def method_missing(name, *args, &block) @controller.send(name, *args, &block) end end puts I18n.t("txt.controllers.triplestore_sync.config_info", :target_info => Iqvoc.config["triplestore.url"]) + " (host: #{ROOT})" success = FakeController.new.triplestore_syncer.all unless success puts I18n.t("txt.controllers.triplestore_sync.error") fail end end
end