contexts 1.0.0 → 1.1.0

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: b6b7149a89f0e5a6552c1087d1f58dd8bfa9967c
4
- data.tar.gz: f61791aa859430bd5ab8e16f84f5838eef32635c
3
+ metadata.gz: 7e84208264b7a2f55fad385cfedaa7585f313378
4
+ data.tar.gz: 66c67a5a407c67712713b6eaf4cdeaaff6c0061e
5
5
  SHA512:
6
- metadata.gz: 18affc6a95b04672cee4d80ee67b4f0ee7062d3abe0e362c90e90aa92ff2e245e4139c8bf52ea8cd3ee4df8cfa878060bc8e28c51b8fc1e07f892046c3e2db7e
7
- data.tar.gz: a3443e921fba6200f3f68c09f80e0e1eb9d222f0f633c475eb0817eba6582dce34a55fc8a6692ddc4b183d4e0e52f0d343d44be1e40a45fb486f2cf9d23a3a2d
6
+ metadata.gz: d3ddb4bd3abc5bd907d8c7f1c73735b5e110e3b0d9d769e9bd9ae8b925758360dd9a16aa0c3a86647770115e73dd7c27b6651a8e51be3ea1b40dddcb82ba96a7
7
+ data.tar.gz: 039fc6ce21c2ff758faeb82a355027aa7bcb3b90455ef6e7946dec838595c4ec72cb987818cdca538d53c283698f46f609e52a251fa7bb578c7d3d1cb2a390d9
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  # Contexts
7
7
 
8
- This gem provides simple way to reuse routes logic in rails apps.
8
+ Simple way to reuse routes logic in Rails apps.
9
9
 
10
10
  ## Installation
11
11
 
data/lib/contexts.rb CHANGED
@@ -2,8 +2,18 @@ require 'contexts/version'
2
2
  require 'mapper'
3
3
 
4
4
  module Contexts
5
+ def self.resolve(name)
6
+ if name.is_a?(Class)
7
+ name.new
8
+ else
9
+ "#{name}_context".classify.constantize.new
10
+ end
11
+ end
12
+
5
13
  def self.included(base)
6
14
  base.class_eval do
15
+ extend ClassMethods
16
+
7
17
  before_action :apply_contexts
8
18
 
9
19
  helper_method :contexts,
@@ -13,6 +23,14 @@ module Contexts
13
23
  end
14
24
  end
15
25
 
26
+ module ClassMethods
27
+ def preload_contexts(*names)
28
+ prepend_before_action do
29
+ names.each{ |name| contexts[name] ||= Contexts.resolve(name) }
30
+ end
31
+ end
32
+ end
33
+
16
34
  def contexts
17
35
  @contexts ||= (request.env['contexts'] || {})
18
36
  end
@@ -1,3 +1,3 @@
1
1
  module Contexts
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
data/lib/mapper.rb CHANGED
@@ -11,8 +11,8 @@ module ActionDispatch::Routing
11
11
  end
12
12
 
13
13
  def context(name, &blk)
14
- name = "#{name}_context".classify.constantize unless name.is_a?(Class)
15
- ctx = name.new
14
+ ctx = Contexts.resolve(name)
15
+
16
16
  path = ":#{ctx.key}"
17
17
  path = "(#{path})" unless ctx.respond_to?(:required?) and ctx.required?
18
18
 
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe ContextPreloadController, type: [:controller, :request] do
4
+ describe '.preload_contexts' do
5
+ it 'populates contexts' do
6
+ get '/'
7
+
8
+ expect(controller.current_context(:lang)).to eq(:en)
9
+ expect(controller.current_context(:city)).to eq(nil)
10
+ end
11
+ end
12
+ end
@@ -8,7 +8,7 @@ class LanguageContext
8
8
  end
9
9
 
10
10
  def constraints
11
- /ru|en/
11
+ Regexp.new(I18n.available_locales.join('|'))
12
12
  end
13
13
 
14
14
  def default
@@ -0,0 +1,3 @@
1
+ class ContextPreloadController < ApplicationController
2
+ preload_contexts :language
3
+ end
File without changes
data/spec/dummy_app.rb ADDED
@@ -0,0 +1,25 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+
3
+ require 'rails'
4
+ require 'action_controller/railtie'
5
+ require 'rspec/rails'
6
+ require 'contexts'
7
+
8
+ module Dummy
9
+ class Application < Rails::Application
10
+ config.secret_key_base = 'dummy_key'
11
+ config.session_store :cookie_store, key: '_dummy_session'
12
+ config.eager_load = false
13
+
14
+ config.i18n.available_locales = [ :en, :ru ]
15
+ config.i18n.default_locale = :en
16
+ end
17
+ end
18
+
19
+ Rails.application.initialize!
20
+
21
+ require 'dummy/app/contexts/language_context'
22
+ require 'dummy/app/contexts/city_context'
23
+ require 'dummy/app/controllers/application_controller'
24
+ require 'dummy/app/controllers/context_preload_controller'
25
+ require 'dummy/routes'
data/spec/spec_helper.rb CHANGED
@@ -1,15 +1,7 @@
1
1
  require 'codeclimate-test-reporter'
2
2
  CodeClimate::TestReporter.start
3
3
 
4
- ENV['RAILS_ENV'] = 'test'
5
-
6
- require File.expand_path('../dummy/config/environment.rb', __FILE__)
7
- require 'rspec/rails'
8
-
9
- require 'dummy/app/controllers/application_controller'
10
- require 'dummy/app/contexts/language_context'
11
- require 'dummy/app/contexts/city_context'
12
- require 'dummy/config/routes'
4
+ require 'dummy_app'
13
5
 
14
6
  RSpec.configure do |config|
15
7
  config.order = 'random'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contexts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kolesnikov Danil
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-22 00:00:00.000000000 Z
11
+ date: 2014-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -113,13 +113,13 @@ files:
113
113
  - lib/contexts/version.rb
114
114
  - lib/mapper.rb
115
115
  - spec/controllers/application_controller_spec.rb
116
+ - spec/controllers/context_preload_controller_spec.rb
116
117
  - spec/dummy/app/contexts/city_context.rb
117
118
  - spec/dummy/app/contexts/language_context.rb
118
119
  - spec/dummy/app/controllers/application_controller.rb
119
- - spec/dummy/config/application.rb
120
- - spec/dummy/config/boot.rb
121
- - spec/dummy/config/environment.rb
122
- - spec/dummy/config/routes.rb
120
+ - spec/dummy/app/controllers/context_preload_controller.rb
121
+ - spec/dummy/routes.rb
122
+ - spec/dummy_app.rb
123
123
  - spec/spec_helper.rb
124
124
  homepage: https://github.com/kolesnikovde/contexts
125
125
  licenses:
@@ -147,11 +147,11 @@ specification_version: 4
147
147
  summary: Simple way to reuse routes logic in rails apps
148
148
  test_files:
149
149
  - spec/controllers/application_controller_spec.rb
150
+ - spec/controllers/context_preload_controller_spec.rb
150
151
  - spec/dummy/app/contexts/city_context.rb
151
152
  - spec/dummy/app/contexts/language_context.rb
152
153
  - spec/dummy/app/controllers/application_controller.rb
153
- - spec/dummy/config/application.rb
154
- - spec/dummy/config/boot.rb
155
- - spec/dummy/config/environment.rb
156
- - spec/dummy/config/routes.rb
154
+ - spec/dummy/app/controllers/context_preload_controller.rb
155
+ - spec/dummy/routes.rb
156
+ - spec/dummy_app.rb
157
157
  - spec/spec_helper.rb
@@ -1,21 +0,0 @@
1
- require File.expand_path('../boot', __FILE__)
2
- require 'action_controller/railtie'
3
- Bundler.require(*Rails.groups)
4
- require 'contexts'
5
-
6
- module Dummy
7
- class Application < Rails::Application
8
- config.secret_key_base = 'dummy_key'
9
- config.session_store :cookie_store, key: '_dummy_session'
10
- config.cache_classes = true
11
- config.eager_load = false
12
- config.consider_all_requests_local = true
13
- config.action_dispatch.show_exceptions = false
14
- config.action_controller.perform_caching = false
15
- config.action_controller.allow_forgery_protection = false
16
- config.active_support.deprecation = :stderr
17
-
18
- config.i18n.available_locales = [ :en, :ru ]
19
- config.i18n.default_locale = :en
20
- end
21
- end
@@ -1,5 +0,0 @@
1
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
2
-
3
- require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
4
-
5
- $LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
@@ -1,3 +0,0 @@
1
- require File.expand_path('../application', __FILE__)
2
-
3
- Rails.application.initialize!