Je veux utiliser une tâche de râteau pour mettre en cache mon site de sitemap afin que les demandes de mais quand j'essaie de courir ceci, je reçois une erreur: p> Comment puis-je rendre Un modèle à une ficelle à partir de râteau? p> p> sitemap.xml code> ne prennent pas pour toujours. Voici ce que j'ai jusqu'à présent:
3 Réponses :
Il y a un POST Comment pouvoir accéder à ActionView :: Méthodes de base et contexte de la tâche Rake.
Cependant, il s'agit d'un soinyptatch. Pourquoi ne pas utiliser les rails ' Mécanisme de cache pour accomplir la mise en cache? :) p>
plus tard éditer:
La fonction ci-dessous est une solution sur la manière de le faire fonctionner à partir de tâches de ratisser, extraites de omninerd . p>
Le mécanisme de cache est génial, mais parfois, vous voulez vraiment générer périodiquement le contenu hors ligne dans un fichier. Une tâche de râteau est l'endroit idéal pour cela - un bon lien.
Je ne peux pas utiliser la mise en cache parce que je ne peux pas rendre le plan du site même une fois en réponse à une requête HTTP, car elle prend plus de 30 secondes et que Heroku tia fois les demandes HTTP à 30 secondes.
Vous avez un point. Donc, l'approche du lien collé est-elle pour vous?
Cela ne fonctionne réellement pas - je reçois l'erreur "méthode non définie" rendu_to_string "pour # rendu_to_string: Modèle => Quel que soit code> et le Post auteur fait
Render: partiel => Quel que soit code>). Je convertirais mon modèle en une partielle, mais c'est un
.builder code>, lequel je ne pense pas fonctionner comme partiel? Des idées?
En fait, cela fait i> fonctionne lorsque je fais le .builder code> une partielle. Maintenant, je reçois une nouvelle erreur lorsque j'essaie d'appeler
x_url code> (E.g.,
post_url code>). Comment puis-je accéder aux aides générateurs d'URL?
+ Horace Loeb: Avez-vous résolu l'accès aux aides générateurs d'URL?
Voici comment je l'ai fait:
av = ActionView::Base.new(Rails::Configuration.new.view_path) av.class_eval do include ApplicationHelper end include ActionController::UrlWriter default_url_options[:host] = 'mysite.com' posts = Post.all sitemap = av.render 'sitemap/sitemap', :posts => posts Rails.cache.write('sitemap', sitemap)
Où utilisez-vous default_url_options Hash?
Récemment, je voulais prendre une tâche de râteau défini comme Horace Loeb mentionné et la traduisez-la en un travail de fond autonome, mais cela n'a pas facilement traduit.
Voici ma mise en œuvre pour les rails 2.3.x parce que le rails 3 implémentation A> J'ai trouvé ne fonctionnerait pas. p> Ceci est disponible en tant que gist: https://gist.github.com/1386052 . p> Ensuite, vous pouvez utiliser la classe ci-dessus pour créer une plaque offsetemplate pour rendre vos vues dans une tâche de râteau: P > task :recent_projects => :environment do
template = OfflineTemplate.new(ProjectsHelper, PermissionsHelper)
puts template.render("projects/recent", :projects => recent_projects)
end
Cet article est utile Stackoverflow.com / Questions / 30725119 / ...