figleaf 0.2.7 → 0.3.0

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
- SHA1:
3
- metadata.gz: 1c3ffa2ddc1516568962663915086576c9537c7f
4
- data.tar.gz: dc3a87ec97a6c98c2a34c2c1b726ec158744c59a
2
+ SHA256:
3
+ metadata.gz: d9587314be7114b5e08704a3f1e2364f41cf90f926c890554b8dd31582dbd7c2
4
+ data.tar.gz: 7f1731a8135590e9992ff1a2e40382fd36f11f9bb3739d6006546a40069ee948
5
5
  SHA512:
6
- metadata.gz: 758279631bd487d533e30b88bbe731a47ff136b34cddeb03c1e64dec22168d32d54fb6596d5886d238335e1f6ff591c07ea5e05df80849e57edd344615147d75
7
- data.tar.gz: cef0b6499ad5c4d7c7b0e8a24ba26d42c68676e6e1afae4668d78398433cb51c522f469f6c52b0cc71e1c2f96f59c45315893868c2218629ae8995cb7a38c046
6
+ metadata.gz: '03471397a014e702344505aee3ebe6289b110278d662ed121fcc634c8a63a20f9207e90b1ca08ec7d6d693246f61b1dede83cec44af33694dae4621b4e892b56'
7
+ data.tar.gz: 76a9bdcec7177c4485273a93748c454b886f3adb22b12e4dfe485ea7359d9f7d418a15509f7ce7747b0b5225ff0fc896598f877c29354ea67d8090a4a03ee238
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.3.0 (2024/04/05)
4
+ - Use YAML.safe_load to support versions of Psych >4
5
+ - Target modern rubies
6
+ - Take advantage of Ruby 3's single line methods
7
+ - Use standardrb to auto format all files
8
+
9
+ ## 0.2.7, 0.2.8 and 0.2.9 (2017/09/28)
10
+ Bugfixes
11
+
3
12
  ## 0.2.6 (2017/09/28)
4
13
  Add ability to write config files in ruby
5
14
 
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
@@ -13,13 +13,15 @@ group :development do
13
13
  gem "rb-fsevent", require: false
14
14
  gem "rb-inotify", require: false
15
15
 
16
- gem 'guard-bundler', :require => false
17
- gem 'guard-livereload', :require => false
18
- gem 'guard-rspec', :require => false
19
- gem 'libnotify', :require => false # linux notifications
20
- gem 'ruby_gntp', :require => false # os x notifications
21
- gem "terminal-notifier-guard", :require => false
16
+ gem "guard-bundler", require: false
17
+ gem "guard-livereload", require: false
18
+ gem "guard-rspec", require: false
19
+ gem "libnotify", require: false # linux notifications
20
+ gem "ruby_gntp", require: false # os x notifications
21
+ gem "terminal-notifier-guard", require: false
22
22
 
23
- gem "pry"
24
- gem "pry-debugger", platforms: :ruby_19
23
+ gem "pry", require: false
24
+ gem "pry-byebug", require: false
25
+
26
+ gem "standard", require: false
25
27
  end
data/Guardfile CHANGED
@@ -1,19 +1,19 @@
1
1
  platform = RUBY_PLATFORM.match(/(linux|darwin)/)[0].to_sym
2
2
  notification case platform
3
- when :darwin
4
- :gntp
5
- when :linux
6
- require 'libnotify'
7
- :libnotify
8
- end
3
+ when :darwin
4
+ :gntp
5
+ when :linux
6
+ require "libnotify"
7
+ :libnotify
8
+ end
9
9
 
10
10
  guard :bundler do
11
- require 'guard/bundler'
12
- require 'guard/bundler/verify'
11
+ require "guard/bundler"
12
+ require "guard/bundler/verify"
13
13
  helper = Guard::Bundler::Verify.new
14
14
 
15
- files = ['Gemfile']
16
- files += Dir['*.gemspec'] if files.any? { |f| helper.uses_gemspec?(f) }
15
+ files = ["Gemfile"]
16
+ files += Dir["*.gemspec"] if files.any? { |f| helper.uses_gemspec?(f) }
17
17
 
18
18
  # Assume files are symlinked from somewhere
19
19
  files.each { |file| watch(helper.real_path(file)) }
data/Rakefile CHANGED
@@ -18,4 +18,4 @@ task :clean do
18
18
  end
19
19
 
20
20
  desc "Run rspec by default"
21
- task :default => :spec
21
+ task default: :spec
data/figleaf.gemspec CHANGED
@@ -1,19 +1,17 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/figleaf/version', __FILE__)
1
+ require File.expand_path("../lib/figleaf/version", __FILE__)
3
2
 
4
3
  Gem::Specification.new do |gem|
5
- gem.authors = ["Juan C. Müller"]
6
- gem.email = ["jcmuller@gmail.com"]
7
- gem.description = %q{YAML based DRY settings manager.}
8
- gem.summary = %q{YAML based DRY settings manager.}
9
- gem.homepage = "http://github.com/jcmuller/figleaf"
4
+ gem.authors = ["Juan C. Müller"]
5
+ gem.email = ["jcmuller@gmail.com"]
6
+ gem.description = "YAML based DRY settings manager."
7
+ gem.summary = "YAML based DRY settings manager."
8
+ gem.homepage = "http://github.com/jcmuller/figleaf"
10
9
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "figleaf"
10
+ gem.files = `git ls-files`.split($\)
11
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
12
+ gem.name = "figleaf"
15
13
  gem.require_paths = ["lib"]
16
- gem.version = Figleaf::VERSION
14
+ gem.version = Figleaf::VERSION
17
15
 
18
16
  gem.add_dependency "activesupport", ">= 3"
19
17
  gem.add_dependency "hashie", ">= 2"
@@ -1,45 +1,37 @@
1
1
  module Figleaf
2
2
  # Convert a ruby block to nested hash
3
3
  class Config
4
- def initialize
5
- @property = LazyBlockHash.new
6
- end
4
+ def initialize = @property = LazyBlockHash.new
7
5
 
8
- def call(&block)
9
- instance_eval(&block)
6
+ def call(&)
7
+ instance_eval(&)
10
8
 
11
9
  property
10
+ rescue => e
11
+ raise Settings::InvalidRb, "Configuration has invalid Ruby\n" + e.message
12
12
  end
13
13
 
14
- def method_missing(method_name, *args, &block)
15
- process_method(method_name, *args, &block)
16
- end
14
+ def method_missing(method_name, *, &) = process_method(method_name, *, &)
17
15
 
18
- def test(&block)
19
- process_method(:test, [], &block)
20
- end
16
+ def test(&) = process_method(:test, [], &)
21
17
 
22
18
  def process_method(method_name, *args, &block)
23
19
  @property[method_name.to_s] =
24
- if block_given?
20
+ if block
25
21
  obj = self.class.new
26
- Proc.new { obj.call(&block) }
22
+ proc { obj.call(&block) }
23
+ elsif args.count == 1
24
+ args[0]
27
25
  else
28
- if args.count == 1
29
- args[0]
30
- else
31
- args
32
- end
26
+ args
33
27
  end
34
28
  end
35
29
 
36
- def respond_to_missing?(method_name, *args)
37
- true
38
- end
30
+ def respond_to_missing?(method_name, *args) = true
39
31
 
40
32
  private
41
33
 
42
- attr_reader :property
34
+ attr_reader :property
43
35
  end
44
36
 
45
37
  class LazyBlockHash < Hash
@@ -50,6 +42,8 @@ module Figleaf
50
42
  else
51
43
  val
52
44
  end
45
+ rescue => e
46
+ raise Settings::InvalidRb, "Configuration has invalid Ruby\n" + e.message
53
47
  end
54
48
  end
55
49
  end
@@ -10,7 +10,7 @@ module Figleaf
10
10
  # Public - configure pre-defined attributes
11
11
  #
12
12
  def configure
13
- self.auto_define.tap do |cached_auto_define|
13
+ auto_define.tap do |cached_auto_define|
14
14
  self.auto_define = false
15
15
  yield self
16
16
  self.auto_define = cached_auto_define
@@ -20,13 +20,13 @@ module Figleaf
20
20
  # Public - configure auto defined settings attributes
21
21
  # and load yaml settings from confing/settings directory
22
22
  #
23
- def configure!(&block)
23
+ def configure!(&)
24
24
  load_settings
25
- configure_with_auto_define(&block)
25
+ configure_with_auto_define(&)
26
26
  end
27
27
 
28
28
  def configure_with_auto_define
29
- self.auto_define.tap do |cached_auto_define|
29
+ auto_define.tap do |cached_auto_define|
30
30
  self.auto_define = true
31
31
  yield self
32
32
  self.auto_define = cached_auto_define
@@ -46,23 +46,23 @@ module Figleaf
46
46
 
47
47
  next if property.nil?
48
48
 
49
- if self.respond_to?(property_name) &&
50
- self.send(property_name).respond_to?(:merge) &&
49
+ if respond_to?(property_name) &&
50
+ send(property_name).respond_to?(:merge) &&
51
51
  property.respond_to?(:merge)
52
- property = self.send(property_name).merge(property)
52
+ property = send(property_name).merge(property)
53
53
  end
54
54
 
55
- self.send("#{property_name}=", property)
55
+ send(:"#{property_name}=", property)
56
56
  end
57
57
  end
58
58
  end
59
59
 
60
60
  def load_file(file, env_to_load = env)
61
- if file.end_with?('.rb')
62
- property_name = File.basename(file, '.rb')
61
+ if file.end_with?(".rb")
62
+ property_name = File.basename(file, ".rb")
63
63
  config = load_rb_file(file) or return nil
64
64
  else
65
- property_name = File.basename(file, '.yml')
65
+ property_name = File.basename(file, ".yml")
66
66
  config = load_yaml_file(file) or return nil
67
67
  end
68
68
 
@@ -70,7 +70,7 @@ module Figleaf
70
70
 
71
71
  default = config["default"]
72
72
  property = config[env_to_load]
73
- property = default.merge(property) if !default.nil?
73
+ property = default.merge(property || {}) if !default.nil?
74
74
 
75
75
  [property_name, use_hashie_if_hash(property)]
76
76
  end
@@ -84,23 +84,23 @@ module Figleaf
84
84
  end
85
85
 
86
86
  def load_yaml_file(file_path)
87
- YAML.load(ERB.new(IO.read(file_path)).result)
87
+ YAML.safe_load(ERB.new(IO.read(file_path)).result, aliases: true)
88
88
  rescue Psych::SyntaxError => e
89
89
  raise InvalidYAML, "#{file_path} has invalid YAML\n" + e.message
90
90
  end
91
91
 
92
92
  def root
93
93
  return Rails.root if defined?(Rails)
94
- Pathname.new('.')
94
+ Pathname.new(".")
95
95
  end
96
96
 
97
97
  def default_file_pattern
98
- [root.join('config/settings/*.yml'), root.join('config/settings/*.rb')]
98
+ [root.join("config/settings/*.yml"), root.join("config/settings/*.rb")]
99
99
  end
100
100
 
101
101
  def env
102
102
  return Rails.env if defined?(Rails)
103
- ENV['ENVIRONMENT']
103
+ ENV["ENVIRONMENT"]
104
104
  end
105
105
 
106
106
  def use_hashie_if_hash(property)
@@ -109,20 +109,20 @@ module Figleaf
109
109
  end
110
110
 
111
111
  def override_with_local!(local_file)
112
- #this file (i.e. test.local.rb) is an optional place to put settings
112
+ # this file (i.e. test.local.rb) is an optional place to put settings
113
113
  local_file.tap do |local_settings_path|
114
- eval(IO.read(local_settings_path), binding) if File.exists?(local_settings_path)
114
+ eval(IO.read(local_settings_path), binding) if File.exist?(local_settings_path)
115
115
  end
116
116
  end
117
117
 
118
118
  def method_missing(method_name, *args)
119
119
  getter_name, modifier = extract_getter_name_and_modifier(method_name)
120
120
 
121
- if self.auto_define && modifier == '=' && args.length == 1
122
- self.define_cattr_methods(getter_name)
123
- self.send(method_name, args.shift)
124
- elsif modifier == '?' && args.empty?
125
- self.send(getter_name).present?
121
+ if auto_define && modifier == "=" && args.length == 1
122
+ define_cattr_methods(getter_name)
123
+ send(method_name, args.shift)
124
+ elsif modifier == "?" && args.empty?
125
+ send(getter_name).present?
126
126
  else
127
127
  super
128
128
  end
@@ -136,11 +136,10 @@ module Figleaf
136
136
  def define_cattr_methods(getter_name)
137
137
  cattr_writer getter_name
138
138
  define_singleton_method(getter_name) do
139
- result = class_variable_get "@@#{getter_name}"
139
+ result = class_variable_get :"@@#{getter_name}"
140
140
  result.respond_to?(:call) ? result.call : result
141
141
  end
142
142
  end
143
-
144
143
  end
145
144
  end
146
145
  end
@@ -1,3 +1,3 @@
1
1
  module Figleaf
2
- VERSION = '0.2.7'
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/figleaf.rb CHANGED
@@ -1,15 +1,15 @@
1
- require 'active_support/concern'
2
- require 'active_support/core_ext/class/attribute'
3
- require 'active_support/core_ext/module/attribute_accessors'
1
+ require "active_support/concern"
2
+ require "active_support/core_ext/class/attribute"
3
+ require "active_support/core_ext/module/attribute_accessors"
4
4
  require "active_support/core_ext/object/blank"
5
- require 'hashie'
6
- require 'pathname'
7
- require 'yaml'
8
- require 'erb'
5
+ require "erb"
6
+ require "hashie"
7
+ require "pathname"
8
+ require "yaml"
9
9
 
10
10
  module Figleaf
11
- autoload :Config, 'figleaf/config'
12
- autoload :Fighash, 'figleaf/fighash'
13
- autoload :Settings, 'figleaf/settings'
14
- autoload :VERSION, 'figleaf/version'
11
+ autoload :Config, "figleaf/config"
12
+ autoload :Fighash, "figleaf/fighash"
13
+ autoload :Settings, "figleaf/settings"
14
+ autoload :VERSION, "figleaf/version"
15
15
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  module Figleaf
4
4
  RSpec.describe Config do
@@ -30,13 +30,13 @@ module Figleaf
30
30
  describe "#call" do
31
31
  subject(:called) { config.call(&code) }
32
32
  it "stores first level keywords as keys" do
33
- expect(called.keys).to contain_exactly(*%w(
33
+ expect(called.keys).to contain_exactly(*%w[
34
34
  default
35
35
  failer
36
36
  production
37
37
  setting_set_on_root
38
38
  test
39
- ))
39
+ ])
40
40
  end
41
41
 
42
42
  it "expands default" do
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Figleaf::Settings do
4
4
  describe "setters and getters" do
@@ -87,7 +87,7 @@ describe Figleaf::Settings do
87
87
 
88
88
  it "return true for lists" do
89
89
  described_class.configure_with_auto_define do |s|
90
- s.not_a_boolean = %w(1 2 3)
90
+ s.not_a_boolean = %w[1 2 3]
91
91
  end
92
92
 
93
93
  described_class.not_a_boolean?.should be true
@@ -116,5 +116,4 @@ describe Figleaf::Settings do
116
116
  }.to raise_error
117
117
  end
118
118
  end
119
-
120
119
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Figleaf::Fighash do
4
4
  describe "#to_hash" do
@@ -8,18 +8,18 @@ describe Figleaf::Fighash do
8
8
 
9
9
  context "should have symbols as keys" do
10
10
  it "for symbol keys" do
11
- subject = described_class.new({ a: :b, c: 1, d: "foo" })
12
- subject.to_hash.should == { a: :b, c: 1, d: "foo" }
11
+ subject = described_class.new({a: :b, c: 1, d: "foo"})
12
+ subject.to_hash.should == {a: :b, c: 1, d: "foo"}
13
13
  end
14
14
 
15
15
  it "for string keys" do
16
- subject = described_class.new({ "a" => :b, "c" => 1, "d" => "foo" })
17
- subject.to_hash.should == { a: :b, c: 1, d: "foo" }
16
+ subject = described_class.new({"a" => :b, "c" => 1, "d" => "foo"})
17
+ subject.to_hash.should == {a: :b, c: 1, d: "foo"}
18
18
  end
19
19
 
20
20
  it "should have symbols as keys inside two levels" do
21
- subject = described_class.new({ a: { b: :d } })
22
- subject.to_hash.should == { a: { b: :d } }
21
+ subject = described_class.new({a: {b: :d}})
22
+ subject.to_hash.should == {a: {b: :d}}
23
23
  end
24
24
  end
25
25
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Figleaf::Settings do
4
4
  describe "self.load_settings" do
@@ -47,12 +47,12 @@ describe Figleaf::Settings do
47
47
  end
48
48
 
49
49
  it "and for erb values" do
50
- expect(described_class.erb.foo).to eq('foo')
50
+ expect(described_class.erb.foo).to eq("foo")
51
51
  expect(described_class.erb.bar).to be_nil
52
52
  end
53
53
 
54
54
  it "raise exception when loading an undefined value" do
55
- YAML.stub(:load_yaml_file).and_return({ "test" => {} })
55
+ YAML.stub(:load_yaml_file).and_return({"test" => {}})
56
56
  described_class.load_settings
57
57
  expect { described_class.service.blah }.to raise_error NoMethodError
58
58
  end
@@ -62,8 +62,8 @@ describe Figleaf::Settings do
62
62
  let(:overload) { File.expand_path("../../fixtures/errors/*.yml", __FILE__) }
63
63
 
64
64
  it "reports the file that has errors" do
65
- expect { described_class.load_settings(overload, "test") }.
66
- to raise_error(described_class::InvalidYAML)
65
+ expect { described_class.load_settings(overload, "test") }
66
+ .to raise_error(described_class::InvalidYAML)
67
67
  end
68
68
  end
69
69
 
@@ -71,8 +71,8 @@ describe Figleaf::Settings do
71
71
  let(:overload) { File.expand_path("../../fixtures/errors/*.rb", __FILE__) }
72
72
 
73
73
  it "reports the file that has errors" do
74
- expect { described_class.load_settings(overload, "test") }.
75
- to raise_error(described_class::InvalidRb)
74
+ expect { described_class.load_settings(overload, "test") }
75
+ .to raise_error(described_class::InvalidRb)
76
76
  end
77
77
  end
78
78
  end
@@ -84,8 +84,8 @@ describe Figleaf::Settings do
84
84
  end
85
85
 
86
86
  it "merge values for matching env" do
87
- expect(described_class.service.foo).to eq 'overridden'
88
- expect(described_class.service.extra).to eq 'extra'
87
+ expect(described_class.service.foo).to eq "overridden"
88
+ expect(described_class.service.extra).to eq "extra"
89
89
  expect(described_class.service.bool_false).to eq(false)
90
90
  expect(described_class.service.bool_true).to eq(true)
91
91
  end
@@ -167,7 +167,7 @@ describe Figleaf::Settings do
167
167
  end
168
168
 
169
169
  it "and for ENV values" do
170
- expect(described_class.code.from_env).to eq('foo')
170
+ expect(described_class.code.from_env).to eq("foo")
171
171
  end
172
172
  end
173
173
  end
@@ -17,5 +17,5 @@ test do
17
17
  bool_false false
18
18
  array 1, 2, 3, 4
19
19
  array_alt [1, 2, 3, 4]
20
- from_env ENV['FIGLEAF_TEST_FOO']
20
+ from_env ENV["FIGLEAF_TEST_FOO"]
21
21
  end
data/spec/spec_helper.rb CHANGED
@@ -19,5 +19,5 @@ RSpec.configure do |config|
19
19
  config.order = "random"
20
20
  end
21
21
 
22
- ENV['FIGLEAF_TEST_FOO'] ||= 'foo'
22
+ ENV["FIGLEAF_TEST_FOO"] ||= "foo"
23
23
  # ENV['FIGLEAF_TEST_BAR'] intentionally left blank
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: figleaf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan C. Müller
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-29 00:00:00.000000000 Z
11
+ date: 2024-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -82,7 +82,7 @@ files:
82
82
  homepage: http://github.com/jcmuller/figleaf
83
83
  licenses: []
84
84
  metadata: {}
85
- post_install_message:
85
+ post_install_message:
86
86
  rdoc_options: []
87
87
  require_paths:
88
88
  - lib
@@ -97,27 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubyforge_project:
101
- rubygems_version: 2.6.11
102
- signing_key:
100
+ rubygems_version: 3.4.19
101
+ signing_key:
103
102
  specification_version: 4
104
103
  summary: YAML based DRY settings manager.
105
- test_files:
106
- - spec/figleaf/config_spec.rb
107
- - spec/figleaf/configuration_spec.rb
108
- - spec/figleaf/fighash_spec.rb
109
- - spec/figleaf/settings_spec.rb
110
- - spec/fixtures/array.yml
111
- - spec/fixtures/boolean.yml
112
- - spec/fixtures/erb.yml
113
- - spec/fixtures/errors/bad_file.rb
114
- - spec/fixtures/errors/bad_file.yml
115
- - spec/fixtures/extra/array.yml
116
- - spec/fixtures/extra/boolean.yml
117
- - spec/fixtures/extra/code.rb
118
- - spec/fixtures/extra/default.yml
119
- - spec/fixtures/extra/default_anchor.yml
120
- - spec/fixtures/extra/service.yml
121
- - spec/fixtures/service.yml
122
- - spec/fixtures/string.yml
123
- - spec/spec_helper.rb
104
+ test_files: []