Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. module React
  2. module Server
  3. module Rendering
  4. extend ActiveSupport::Concern
  5. include ::BeforeRender
  6.  
  7. included do
  8. before_render :set_rendered
  9.  
  10. attr_reader :rendered
  11. helper_method :rendered
  12. end
  13.  
  14. def set_rendered
  15. @rendered = self.class.server_js.eval(
  16. "this.render(#{data.to_json})"
  17. )
  18. end
  19.  
  20. module ClassMethods
  21. @@server_js = ""
  22. @@server_js_last_modified = Time.at 0
  23.  
  24. def server_js
  25. if @@server_js_last_modified < mtime = File.mtime(filepath)
  26. @@server_js = File.open(filepath).read
  27. @@server_js = ExecJS.compile @@server_js
  28. @@server_js_last_modified = mtime
  29. end
  30. @@server_js
  31. end
  32.  
  33. private
  34.  
  35. def filepath
  36. Rails.configuration.react.server_js
  37. end
  38. end
  39. end
  40. end
  41. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement