site_framework 0.3.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/site_framework/domain.rb +24 -5
- data/app/models/site_framework/site.rb +13 -3
- data/lib/site_framework/engine.rb +2 -1
- data/lib/site_framework/middleware.rb +15 -1
- data/lib/site_framework/mongoid/concerns.rb +11 -0
- data/lib/site_framework/orm.rb +20 -0
- data/lib/site_framework/version.rb +1 -1
- data/lib/site_framework.rb +9 -2
- metadata +41 -25
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1ebfba86caf32f02c9c3ee0005ae888ab99a5693
         | 
| 4 | 
            +
              data.tar.gz: 7592ca5ba338fb8c130988fee3ffecff6d17e7ff
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 46be8593a818ab7b94910d3e7c30b56e7595af4da2ee9d41a760cdb69a01b653408ea47ca059451d9b28465eb408839ed51faad1e00ae37c60641b91427282a5
         | 
| 7 | 
            +
              data.tar.gz: b3c247baf8b0cca3cbd08afda993e21fce2e55acffc0541822c1f36b2eabdbdf1dac5cf9dd0e52d103ab1de9c661d2da207996b32742b43c0773a6fb91e31703
         | 
| @@ -2,14 +2,33 @@ module SiteFramework | |
| 2 2 | 
             
              # This model represent a **Domain**. Each domain
         | 
| 3 3 | 
             
              # belongs to a [Site] model and may or may not
         | 
| 4 4 | 
             
              # belongs to another  **Domain**
         | 
| 5 | 
            -
              class Domain < ActiveRecord::Base
         | 
| 5 | 
            +
              class Domain < (defined?(ActiveRecord) ? ActiveRecord::Base : Object)
         | 
| 6 6 |  | 
| 7 | 
            -
                 | 
| 7 | 
            +
                if defined? Mongoid
         | 
| 8 | 
            +
                  include Mongoid::Document
         | 
| 9 | 
            +
                  include Mongoid::Timestamps
         | 
| 8 10 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            +
                  field :name, :type => String
         | 
| 12 | 
            +
                  field :parent, :type => String
         | 
| 13 | 
            +
                  field :alias, :type => Boolean
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  embedded_in :site
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  index({ name: 1 }, { unique: true, background: true })
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def parent
         | 
| 20 | 
            +
                    # TODO: return a domain with alias == false
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                if defined? ActiveRecord
         | 
| 25 | 
            +
                  belongs_to :site
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  # Self relation
         | 
| 28 | 
            +
                  belongs_to :parent, :class_name => self.class
         | 
| 29 | 
            +
                  validates_associated :site
         | 
| 30 | 
            +
                end
         | 
| 11 31 |  | 
| 12 | 
            -
                validates_associated :site
         | 
| 13 32 | 
             
                validates :name, :presence => true,
         | 
| 14 33 | 
             
                   :format => { :with => /\A(?:[a-z0-9\-]+\.)+[a-z]{2,4}\z/i }
         | 
| 15 34 | 
             
                validates_uniqueness_of :name
         | 
| @@ -3,8 +3,19 @@ module SiteFramework | |
| 3 3 | 
             
              # [SiteFramework::Middleware] will check for a site
         | 
| 4 4 | 
             
              # with current domain of request and attach the object
         | 
| 5 5 | 
             
              # to global **Rails** object
         | 
| 6 | 
            -
              class Site < ActiveRecord::Base
         | 
| 7 | 
            -
             | 
| 6 | 
            +
              class Site < (defined?(ActiveRecord) ? ActiveRecord::Base : Object)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                if defined? Mongoid
         | 
| 9 | 
            +
                  include Mongoid::Document
         | 
| 10 | 
            +
                  include Mongoid::Timestamps
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  field :title, :type => String
         | 
| 13 | 
            +
                  field :description, :type => String
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  embeds_many :domains
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                has_many :domains if defined? ActiveRecord::Base
         | 
| 8 19 |  | 
| 9 20 | 
             
                # This method returns a slug for site title
         | 
| 10 21 | 
             
                def slug
         | 
| @@ -13,7 +24,6 @@ module SiteFramework | |
| 13 24 | 
             
                  else
         | 
| 14 25 | 
             
                    # TODO: generate a sha1 hash base on time
         | 
| 15 26 | 
             
                  end
         | 
| 16 | 
            -
             | 
| 17 27 | 
             
                end
         | 
| 18 28 | 
             
              end
         | 
| 19 29 | 
             
            end
         | 
| @@ -17,6 +17,18 @@ module SiteFramework | |
| 17 17 | 
             
                    env['SERVER_NAME']
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 |  | 
| 20 | 
            +
                  # Create `fetch_domain` method on `Rails.application`
         | 
| 21 | 
            +
                  # only if it didn't already define.
         | 
| 22 | 
            +
                  unless Rails.application.respond_to? :fetch_domain
         | 
| 23 | 
            +
                    Rails.application.send :define_singleton_method, 'fetch_domain' do
         | 
| 24 | 
            +
                      if defined? ActiveRecord
         | 
| 25 | 
            +
                        Domain.find_by(nam: Rails.application.domain_name)
         | 
| 26 | 
            +
                      elsif defined? Mongoid
         | 
| 27 | 
            +
                        Site.where('domains.name' => Rails.application.domain_name).domains.first
         | 
| 28 | 
            +
                      end
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 20 32 | 
             
                  Rails.application.send :define_singleton_method, 'domain' do
         | 
| 21 33 | 
             
                    domain = nil
         | 
| 22 34 | 
             
                    if Rails.application.instance_variable_defined? '@domain'
         | 
| @@ -27,7 +39,9 @@ module SiteFramework | |
| 27 39 | 
             
                    end
         | 
| 28 40 |  | 
| 29 41 | 
             
                    if domain.nil?
         | 
| 30 | 
            -
                       | 
| 42 | 
            +
                      # Fetch domain by calling **fetch_domain** method on
         | 
| 43 | 
            +
                      # **Rails.application**
         | 
| 44 | 
            +
                      domain_obj = fetch_domain
         | 
| 31 45 | 
             
                      if respond_to? :logger
         | 
| 32 46 | 
             
                        logger.debug '`domain` is nil'
         | 
| 33 47 | 
             
                        logger.warn "Can't find domain object of `#{Rails.application.domain_name}`"
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            module SiteFramework
         | 
| 2 | 
            +
              module ORM
         | 
| 3 | 
            +
                def self.current_orm
         | 
| 4 | 
            +
                  if defined? ActiveRecord
         | 
| 5 | 
            +
                    'active_record'
         | 
| 6 | 
            +
                  elsif defined? Mongoid
         | 
| 7 | 
            +
                    'mongoid'
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def self.base_class
         | 
| 12 | 
            +
                  case current_orm
         | 
| 13 | 
            +
                  when 'active_record'
         | 
| 14 | 
            +
                    ::ActiveRecord::Base
         | 
| 15 | 
            +
                  when 'mongoid'
         | 
| 16 | 
            +
                    Object
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
            end
         | 
    
        data/lib/site_framework.rb
    CHANGED
    
    | @@ -4,6 +4,13 @@ end | |
| 4 4 |  | 
| 5 5 | 
             
            require "site_framework/engine"
         | 
| 6 6 | 
             
            require 'site_framework/railtie'
         | 
| 7 | 
            -
            require 'site_framework/ | 
| 8 | 
            -
             | 
| 7 | 
            +
            require 'site_framework/orm'
         | 
| 8 | 
            +
            case SiteFramework::ORM.current_orm
         | 
| 9 | 
            +
            when 'active_record'
         | 
| 10 | 
            +
              require 'site_framework/active_record/migration'
         | 
| 11 | 
            +
              require 'site_framework/active_record/concerns'
         | 
| 12 | 
            +
            when 'mongoid'
         | 
| 13 | 
            +
              require 'site_framework/mongoid/concerns'
         | 
| 14 | 
            +
            end
         | 
| 15 | 
            +
             | 
| 9 16 | 
             
            require 'site_framework/middleware'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,29 +1,43 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: site_framework
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 1.0.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sameer Rahmani
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 11 | 
            +
            date: 2014-06-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 14 | 
            +
              name: railties
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 4 | 
| 19 | 
            +
                    version: '4'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 4 | 
| 26 | 
            +
                    version: '4'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: orm_adapter
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ">="
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 27 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 42 | 
             
              name: rspec
         | 
| 29 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -60,6 +74,8 @@ files: | |
| 60 74 | 
             
            - lib/site_framework/active_record/migration.rb
         | 
| 61 75 | 
             
            - lib/site_framework/engine.rb
         | 
| 62 76 | 
             
            - lib/site_framework/middleware.rb
         | 
| 77 | 
            +
            - lib/site_framework/mongoid/concerns.rb
         | 
| 78 | 
            +
            - lib/site_framework/orm.rb
         | 
| 63 79 | 
             
            - lib/site_framework/railtie.rb
         | 
| 64 80 | 
             
            - lib/site_framework/version.rb
         | 
| 65 81 | 
             
            - lib/tasks/site_framework_tasks.rake
         | 
| @@ -123,37 +139,37 @@ specification_version: 4 | |
| 123 139 | 
             
            summary: A site framework for Ruby on Rails web framework inspired by Django site
         | 
| 124 140 | 
             
              fremework
         | 
| 125 141 | 
             
            test_files:
         | 
| 142 | 
            +
            - spec/spec_helper.rb
         | 
| 126 143 | 
             
            - spec/models/site_framework/site_spec.rb
         | 
| 127 144 | 
             
            - spec/models/site_framework/domain_spec.rb
         | 
| 128 | 
            -
            - spec/ | 
| 129 | 
            -
            - spec/dummy/ | 
| 145 | 
            +
            - spec/dummy/public/500.html
         | 
| 146 | 
            +
            - spec/dummy/public/404.html
         | 
| 147 | 
            +
            - spec/dummy/public/422.html
         | 
| 148 | 
            +
            - spec/dummy/public/favicon.ico
         | 
| 149 | 
            +
            - spec/dummy/config.ru
         | 
| 150 | 
            +
            - spec/dummy/README.rdoc
         | 
| 130 151 | 
             
            - spec/dummy/app/views/layouts/application.html.erb
         | 
| 131 | 
            -
            - spec/dummy/app/helpers/application_helper.rb
         | 
| 132 152 | 
             
            - spec/dummy/app/assets/javascripts/application.js
         | 
| 133 153 | 
             
            - spec/dummy/app/assets/stylesheets/application.css
         | 
| 154 | 
            +
            - spec/dummy/app/controllers/application_controller.rb
         | 
| 155 | 
            +
            - spec/dummy/app/helpers/application_helper.rb
         | 
| 156 | 
            +
            - spec/dummy/Rakefile
         | 
| 157 | 
            +
            - spec/dummy/bin/rake
         | 
| 134 158 | 
             
            - spec/dummy/bin/bundle
         | 
| 135 159 | 
             
            - spec/dummy/bin/rails
         | 
| 136 | 
            -
            - spec/dummy/bin/rake
         | 
| 137 | 
            -
            - spec/dummy/public/404.html
         | 
| 138 | 
            -
            - spec/dummy/public/422.html
         | 
| 139 | 
            -
            - spec/dummy/public/500.html
         | 
| 140 | 
            -
            - spec/dummy/public/favicon.ico
         | 
| 141 | 
            -
            - spec/dummy/config.ru
         | 
| 142 160 | 
             
            - spec/dummy/config/application.rb
         | 
| 143 | 
            -
            - spec/dummy/config/environments/development.rb
         | 
| 144 161 | 
             
            - spec/dummy/config/environments/test.rb
         | 
| 162 | 
            +
            - spec/dummy/config/environments/development.rb
         | 
| 145 163 | 
             
            - spec/dummy/config/environments/production.rb
         | 
| 146 | 
            -
            - spec/dummy/config/ | 
| 147 | 
            -
            - spec/dummy/config/initializers/filter_parameter_logging.rb
         | 
| 148 | 
            -
            - spec/dummy/config/initializers/secret_token.rb
         | 
| 149 | 
            -
            - spec/dummy/config/initializers/session_store.rb
         | 
| 150 | 
            -
            - spec/dummy/config/initializers/wrap_parameters.rb
         | 
| 151 | 
            -
            - spec/dummy/config/initializers/mime_types.rb
         | 
| 152 | 
            -
            - spec/dummy/config/initializers/inflections.rb
         | 
| 164 | 
            +
            - spec/dummy/config/routes.rb
         | 
| 153 165 | 
             
            - spec/dummy/config/environment.rb
         | 
| 154 166 | 
             
            - spec/dummy/config/database.yml
         | 
| 155 167 | 
             
            - spec/dummy/config/locales/en.yml
         | 
| 156 | 
            -
            - spec/dummy/config/routes.rb
         | 
| 157 168 | 
             
            - spec/dummy/config/boot.rb
         | 
| 158 | 
            -
            - spec/dummy/ | 
| 159 | 
            -
            - spec/dummy/ | 
| 169 | 
            +
            - spec/dummy/config/initializers/session_store.rb
         | 
| 170 | 
            +
            - spec/dummy/config/initializers/backtrace_silencers.rb
         | 
| 171 | 
            +
            - spec/dummy/config/initializers/wrap_parameters.rb
         | 
| 172 | 
            +
            - spec/dummy/config/initializers/inflections.rb
         | 
| 173 | 
            +
            - spec/dummy/config/initializers/filter_parameter_logging.rb
         | 
| 174 | 
            +
            - spec/dummy/config/initializers/mime_types.rb
         | 
| 175 | 
            +
            - spec/dummy/config/initializers/secret_token.rb
         |