Guest User

Untitled

a guest
Feb 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. require 'jruby/rack'
  2.  
  3. module JRuby
  4. module Rack
  5. class MerbServletHelper < ::JRuby::Rack::ServletHelper
  6. attr_reader :merb_environment, :merb_root
  7.  
  8. def initialize(servlet_context = nil)
  9. super
  10.  
  11. @merb_root = @servlet_context.getInitParameter('merb.root')
  12. @merb_root ||= '/WEB-INF'
  13. @merb_root = expand_root_path @merb_root
  14.  
  15. @merb_environment = @servlet_context.getInitParameter('merb.environment')
  16. @merb_environment ||= 'production'
  17. end
  18.  
  19. def load_merb
  20. load_merb_gems
  21. register_servlet_adapter
  22. load_servlet_sessions
  23. start_merb
  24. end
  25.  
  26. def load_merb_gems
  27. logger.debug('Loading merb-core gem')
  28. require 'rubygems'
  29. require 'merb-core'
  30. require 'merb-core/rack'
  31. end
  32.  
  33. def load_servlet_sessions
  34. logger.debug('Loading Merb servlet sessions')
  35. require 'jruby/rack/merb_servlet_session'
  36. end
  37.  
  38. def register_servlet_adapter
  39. logger.debug('Registering Merb servlet adapter')
  40. Merb::Rack::Adapter.register %w{servlet}, :Servlet
  41. end
  42.  
  43. def start_merb
  44. logger.debug('Starting Merb')
  45.  
  46. Merb::Config.setup({
  47. :merb_root => @merb_root,
  48. :environment => @merb_environment,
  49. :adapter => 'servlet',
  50. :fork_for_class_load => false,
  51. :verbose => true
  52. })
  53. Merb.environment = Merb::Config[:environment]
  54. Merb.root = Merb::Config[:merb_root]
  55.  
  56. logger.debug("Running bootloaders")
  57. Merb::BootLoader.run
  58.  
  59. logger.debug("Starting Rack adapter")
  60. Merb.adapter.start(Merb::Config.to_hash)
  61. end
  62. end
  63.  
  64. class MerbFactory
  65. def self.new
  66. MerbServletHelper.instance.load_merb
  67. ::Rack::Builder.new { run ::Merb::Config[:app] }.to_app
  68. end
  69. end
  70. end
  71. end
  72.  
  73. # Merb likes to hardcode things into the Merb:: namespace.
  74. module Merb
  75. module Rack
  76. class Servlet
  77. def self.start(opts={})
  78. ::Merb.logger.warn!("Using Java servlet adapter")
  79. end
  80. end
  81. end
  82. end
Add Comment
Please, Sign In to add comment