Sha256: a905cbcd8b15fe57fc12c7b627806f706c5aa68b40588c425173a82ebd314531

Contents?: true

Size: 1.65 KB

Versions: 9

Compression:

Stored size: 1.65 KB

Contents

module Mack
  module Distributed
    module Routes # :nodoc:
      # A class used to house the Mack::Routes::Url module for distributed applications.
      # Functionally this class does nothing, but since you can't cache a module, a class is needed.
      class Urls
        include DRbUndumped
        
        def initialize(dsd) # :nodoc:
          @dsd = dsd
        end
        
        def put
          Mack::Distributed::Utils::Rinda.register_or_renew(:space => configatron.mack.distributed.app_name.to_sym, 
                                                            :klass_def => :distributed_routes, 
                                                            :object => self, :timeout => 0)
        end
        
        def run(meth, options)
          self.send(meth, options)
        end
        
        class << self
          
          def get(app_name)
            Mack::Distributed::Utils::Rinda.read(:space => app_name.to_sym, :klass_def => :distributed_routes)
          end
          
        end
        
      end # Urls
      
    end # Routes
  end # Distributed
  
end # Mack

Mack::Routes.after_class_method(:build) do
  if configatron.mack.distributed.share_routes
    raise Mack::Distributed::Errors::ApplicationNameUndefined.new if configatron.mack.distributed.app_name.nil?
    
    d_urls = Mack::Distributed::Routes::Urls.new(configatron.mack.distributed.site_domain)
    d_urls.put
    Mack::Routes::Urls.include_safely_into(Mack::Distributed::Routes::Urls)
    Mack::Distributed::Routes::Urls.protected_instance_methods.each do |m|
      Mack::Distributed::Routes::Urls.instance_eval do
        public m if m.match(/_url$/)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
mack-distributed-0.8.0 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.0.101 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.1 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.2 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.0.1 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.0.2 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.0.3 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.3 lib/mack-distributed/routes/urls.rb
mack-distributed-0.8.3.1 lib/mack-distributed/routes/urls.rb