limited_release 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/limited_release.rb +15 -3
- data/lib/limited_release/controller.rb +1 -3
- data/lib/limited_release/feature.rb +7 -2
- data/lib/limited_release/railtie.rb +10 -4
- data/lib/limited_release/reloader.rb +20 -0
- data/lib/limited_release/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1793f17daec59d15f6e169206d729c13817ba005efb6ea2d2a3db1b40e1ca63
|
4
|
+
data.tar.gz: c061742f097b893a9e15b58210531a04bc29186e243d785e95949a80a2950db5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70602c0598144dee50ae7d2562dfe48497fcaf2705d97670bd0d4c3dfe4eb3329ec236b2b15a684a2a33450f6470b59487897f1a91b504c3fbe1e36ba9943d70
|
7
|
+
data.tar.gz: 35facc7d76f151040a5b20c57d08f529863fc200f38faa218172a9efe3f7510a21dfe3625efc2f027022a74337bbd3a776e520c6db489fece3b3a451d99e6974
|
data/lib/limited_release.rb
CHANGED
@@ -4,12 +4,24 @@ require 'limited_release/railtie'
|
|
4
4
|
require 'limited_release/config'
|
5
5
|
require 'limited_release/feature'
|
6
6
|
require 'limited_release/controller'
|
7
|
+
require 'limited_release/reloader'
|
7
8
|
|
8
9
|
module LimitedRelease
|
9
|
-
def self.
|
10
|
-
@features
|
10
|
+
def self.features
|
11
|
+
@features ||= Dir[::Rails.root.join('config', 'limited_releases', '*.rb')].map do |path|
|
12
|
+
name = File.basename(path, '.rb').classify
|
13
|
+
|
14
|
+
Object.send(:remove_const, name) if Object.const_defined?(name)
|
15
|
+
|
11
16
|
load path
|
12
|
-
|
17
|
+
name.constantize
|
13
18
|
end
|
14
19
|
end
|
20
|
+
|
21
|
+
def self.reload!
|
22
|
+
@features = nil
|
23
|
+
self.features
|
24
|
+
|
25
|
+
true
|
26
|
+
end
|
15
27
|
end
|
@@ -10,15 +10,13 @@ module LimitedRelease
|
|
10
10
|
prepend_around_action :wrap_rescue
|
11
11
|
|
12
12
|
prepend_before_action do
|
13
|
-
LimitedRelease.load_features if ::Rails.env.development?
|
14
|
-
|
15
13
|
@_limited_release = self.class.name.split('::')[1].sub(/Controller\z/, '').constantize
|
16
14
|
end
|
17
15
|
|
18
16
|
before_action do
|
19
17
|
raise InvalidCondition unless @_limited_release.active?(self)
|
20
18
|
|
21
|
-
self.class.helper @_limited_release.helpers
|
19
|
+
self.class.helper @_limited_release.helpers
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
@@ -4,6 +4,10 @@ module LimitedRelease
|
|
4
4
|
module Feature
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
|
+
included do
|
8
|
+
self.const_set(:Helper, Module.new)
|
9
|
+
end
|
10
|
+
|
7
11
|
module ClassMethods
|
8
12
|
def active_if(&block)
|
9
13
|
@active_if = block
|
@@ -19,8 +23,9 @@ module LimitedRelease
|
|
19
23
|
end
|
20
24
|
|
21
25
|
def helpers(&block)
|
22
|
-
|
23
|
-
|
26
|
+
helper = self.const_get(:Helper)
|
27
|
+
helper.module_eval(&block) if block
|
28
|
+
helper
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|
@@ -3,13 +3,19 @@
|
|
3
3
|
module LimitedRelease
|
4
4
|
class Railtie < ::Rails::Railtie
|
5
5
|
ActiveSupport.on_load :after_initialize do
|
6
|
-
Rails.application.routes.prepend do
|
7
|
-
|
8
|
-
|
9
|
-
self.instance_eval(&feature.routes)
|
6
|
+
::Rails.application.routes.prepend do
|
7
|
+
namespace :limited_release, path: nil do
|
8
|
+
::LimitedRelease.features.each do |feature|
|
9
|
+
self.instance_eval(&feature.routes) if feature.routes
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
14
|
+
|
15
|
+
if ::Rails.env.development?
|
16
|
+
initializer 'limited_release.insert_reloader' do |app|
|
17
|
+
app.config.middleware.use ::LimitedRelease::Reloader
|
18
|
+
end
|
19
|
+
end
|
14
20
|
end
|
15
21
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LimitedRelease
|
4
|
+
class Reloader
|
5
|
+
def initialize(app)
|
6
|
+
@app = app
|
7
|
+
|
8
|
+
@reloader = ActiveSupport::FileUpdateChecker.new(Dir[::Rails.root.join('config', 'limited_releases', '**', '*.rb')]) do
|
9
|
+
::LimitedRelease.reload!
|
10
|
+
::Rails.application.reload_routes!
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
@reloader.execute_if_updated
|
16
|
+
|
17
|
+
@app.call(env)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: limited_release
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jun0kada
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- lib/limited_release/controller.rb
|
56
56
|
- lib/limited_release/feature.rb
|
57
57
|
- lib/limited_release/railtie.rb
|
58
|
+
- lib/limited_release/reloader.rb
|
58
59
|
- lib/limited_release/version.rb
|
59
60
|
homepage: https://github.com/Jun0kada/limited_release
|
60
61
|
licenses:
|