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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65a4827c2d190b067f669797e9fae853a39f767689265b8ded1c64d47a065f82
4
- data.tar.gz: 2985d0382e213158697ee214ff07e59de9f491cdf925758855a58145fafa2a90
3
+ metadata.gz: e1793f17daec59d15f6e169206d729c13817ba005efb6ea2d2a3db1b40e1ca63
4
+ data.tar.gz: c061742f097b893a9e15b58210531a04bc29186e243d785e95949a80a2950db5
5
5
  SHA512:
6
- metadata.gz: 2cd2bec9a35a160971d5e6b8ba49fa81ee53921636e3e81b41131b9d9773ed80aea878fe055e24800e524ca3b1caeb1bac665d0f61d58e944e8f88d8fe2dad14
7
- data.tar.gz: 5c61637a213e12e8593be76a4711b2594ebb7ef0e9c24fc72dfa4c537117fb7663e0d042a9018295f720b4463328a4b0540f0b3c986a362dea57e3f8beabdc72
6
+ metadata.gz: 70602c0598144dee50ae7d2562dfe48497fcaf2705d97670bd0d4c3dfe4eb3329ec236b2b15a684a2a33450f6470b59487897f1a91b504c3fbe1e36ba9943d70
7
+ data.tar.gz: 35facc7d76f151040a5b20c57d08f529863fc200f38faa218172a9efe3f7510a21dfe3625efc2f027022a74337bbd3a776e520c6db489fece3b3a451d99e6974
@@ -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.load_features
10
- @features = Dir[::Rails.root.join('config', 'limited_releases', '*.rb')].map do |path|
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
- File.basename(path, '.rb').classify.constantize
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 if @_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
- @helpers = Module.new(&block) if block
23
- @helpers
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
- LimitedRelease.load_features.each do |feature|
8
- namespace :limited_release, path: nil do
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LimitedRelease
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  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.0
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-06 00:00:00.000000000 Z
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: