limited_release 0.1.0 → 0.1.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
  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: