Guest User

Untitled

a guest
Jul 19th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. module Jagua
  2. class Engine
  3. def initialize(res_path)
  4. $RES_PATH = res_path
  5. require 'rubygems'; require 'activerecord'; require 'erb'
  6. ActiveRecord::Base.establish_connection(YAML.load_file('db/conf.yml'))
  7. Dir['db/models/*'].each do |model|; require model; end
  8. end
  9. def republish_blog(blog)
  10. # copiar todo excepto los templates
  11. system("cp #{File.join(blog.theme.path, '*.css')} #{blog.local_path} -Rf")
  12. # paginas individuales
  13. blog.posts.each do |post|
  14. open(post.local_path, 'w') do |f|
  15. f.print publish_post(post, :complete)
  16. end
  17. end
  18. # archivos mensuales
  19. # portada + feed rss
  20. s = ""
  21. latest_posts = blog.posts.find( :all, :order => 'created_at DESC', :limit => 20 )
  22. latest_posts.each do |post|
  23. s += publish_post(post, :partial)
  24. end
  25. open(File.join(blog.local_path, 'index.html'), 'w') do |f|
  26. f.print(blog.theme.render_with(s, blog))
  27. end
  28. # RSS...
  29. open(File.join(blog.local_path, 'feed.xml'), 'w') do |f|
  30. f.print generate_rss_feed(latest_posts)
  31. end
  32. end
  33. def publish_post(post, action)
  34. @post = post.render_attributes
  35. rendered_post = ERB.new(File.read(File.join(post.blog.theme.path, 'post.html'))).result(binding)
  36. if action == :complete
  37. # layout + post
  38. return post.blog.theme.render_with(rendered_post, post.blog)
  39. else
  40. # post (partial)
  41. return rendered_post
  42. end
  43. end
  44. def generate_rss_feed(posts)
  45. require 'rss/maker'
  46. content = RSS::Maker.make('2.0') do |s|
  47. s.channel.title = posts[0].blog.title
  48. s.channel.link = posts[0].blog.public_path
  49. s.channel.description = posts[0].blog.description
  50. s.items.do_sort = true
  51. posts.each do |post|
  52. p = s.items.new_item
  53. p.title = post.title
  54. p.description = post.content[0,250]
  55. p.link = post.public_path
  56. p.date = post.created_at
  57. end
  58. end
  59. return content.to_s
  60. end
  61. end
  62. end
Add Comment
Please, Sign In to add comment