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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2fb51315df859b2956c28c75ec98c8ac6b4e107c
4
- data.tar.gz: a5834402764a4a218fdbc1af1af6583c203358fd
3
+ metadata.gz: 1ebfba86caf32f02c9c3ee0005ae888ab99a5693
4
+ data.tar.gz: 7592ca5ba338fb8c130988fee3ffecff6d17e7ff
5
5
  SHA512:
6
- metadata.gz: 1258af53d24fa55df5e33b7a802950ef49e87f5aff9dfc1b5659536e3f723ea28e2a33dbcd88889647599bf844ade1f9eb2e6ea2ed69e92251f01abafdab2b74
7
- data.tar.gz: 29b35c5c149570b7597b3e1c5a098c66c28873228d7d278fb4029895e3e204877b9b5da5a16ec21b98ec3b9168be11e6f2deae08efed680760a310b6386a5f10
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
- belongs_to :site
7
+ if defined? Mongoid
8
+ include Mongoid::Document
9
+ include Mongoid::Timestamps
8
10
 
9
- # Self relation
10
- belongs_to :parent, :class_name => self.class
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
- has_many :domains
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
@@ -1,8 +1,9 @@
1
1
  module SiteFramework
2
+ # **SiteFramework** rails engine class.
2
3
  class Engine < ::Rails::Engine
3
4
 
4
5
  isolate_namespace SiteFramework
5
- engine_name "site_framework"
6
+ engine_name 'site_framework'
6
7
 
7
8
  config.generators do |g|
8
9
  g.test_framework :rspec
@@ -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
- domain_obj = Domain.find_by(:name => Rails.application.domain_name)
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,11 @@
1
+ module SiteFramework
2
+ module DomainAware
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ belongs_to :site
7
+ default_scope -> { where(:site.domain => Rails.application.domain) }
8
+ end
9
+
10
+ end
11
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module SiteFramework
2
- VERSION = "0.3.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -4,6 +4,13 @@ end
4
4
 
5
5
  require "site_framework/engine"
6
6
  require 'site_framework/railtie'
7
- require 'site_framework/active_record/migration'
8
- require 'site_framework/active_record/concerns'
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.3.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-03-31 00:00:00.000000000 Z
11
+ date: 2014-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: railties
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.2
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.0.2
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/spec_helper.rb
129
- - spec/dummy/app/controllers/application_controller.rb
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/initializers/backtrace_silencers.rb
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/README.rdoc
159
- - spec/dummy/Rakefile
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