econfig-keychain 1.0.1 → 1.0.2

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: 495ae65ae8b8e05d67d3eff3b472e20e0a022de9
4
- data.tar.gz: a5492f0f83c3113c135e5731d4e17db7e1954485
3
+ metadata.gz: 8510be80ac12c816ca31d78e99966ed7e7239f48
4
+ data.tar.gz: 17623f293d5e9d461cf910c7d30f63dd955c3d52
5
5
  SHA512:
6
- metadata.gz: fdd4492e96ef852ac396406f208662410156c6076083f9efaa28055e533ba8cfcf1bb74dfeeb2f5eae1527f20e013759a0b8e1b90ecd9d7a91e53fe8a4d0e331
7
- data.tar.gz: 40e34cf65c50c24136801905f4458d2cda9f192aa446f5b11b1b2c27c01e43a52baa01131e453518ee85b92b826d157c31e00df8474b8cce7844be0fc7c09c86
6
+ metadata.gz: c99c777e3f184bb88509dc28d366e9fbaea0af8271625f7a281325d2da474d32c017f28e9204c3524f2d26545a7372adc8dfc39d03ad5d261f18492bf8639e7a
7
+ data.tar.gz: f2a97f4e6e69865ba0320c62c7794d88d87ce95d5d5d8e4885b900664df553366edb04b1e5a9c921e67f9b8bf93c03508b164e056c3c5bccf83f66bfb7595bb7
data/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  [HEAD][]
2
2
  --------
3
3
 
4
+ [v1.0.2][]
5
+ ----------
6
+
7
+ - Allow specifying project name in Econfig.use_keychain [974df0db]
8
+ - Enforce Econfig.init, works better with Rails as well [1680b780]
9
+
4
10
  [v1.0.1][]
5
11
  ----------
6
12
 
@@ -17,6 +23,7 @@
17
23
 
18
24
  Initial release!
19
25
 
20
- [HEAD]: https://github.com/elabs/econfig-keychain/compare/v1.0.1...HEAD
26
+ [HEAD]: https://github.com/elabs/econfig-keychain/compare/v1.0.2...HEAD
27
+ [v1.0.2]: https://github.com/elabs/econfig-keychain/compare/v1.0.1...v1.0.2
21
28
  [v1.0.1]: https://github.com/elabs/econfig-keychain/compare/v1.0.0...v1.0.1
22
29
  [v1.0.0]: https://github.com/elabs/econfig-keychain/compare/f877fd49...v1.0.0
data/README.md CHANGED
@@ -14,29 +14,42 @@ gem "econfig-keychain"
14
14
  ```
15
15
 
16
16
  Second, create a keychain you wish to store configuration in, name it something
17
- clever like `thanks-a-latte`. Within `config/initializers/econfig.rb` write the
18
- following:
17
+ clever like `thanks-a-latte`. Within `config/application.rb` write the following:
19
18
 
20
19
  ``` ruby
21
- MyApp.extend Econfig::Shortcut
20
+ # … some rails setup previously
21
+ module MyApp
22
+ extend Econfig::Shortcut
23
+ Econfig.use_keychain "thanks-a-latte" if Rails.env.development?
24
+
25
+ class Application < Rails::Application
26
+ # … rest of the configuration
27
+ ```
28
+
29
+ That's it!
30
+
31
+ Econfig::Keychain will automatically create an empty secure note using the name of the directory your project is located at, in the `thanks-a-latte` keychain. If you wish to specify the name yourself, you can do so:
22
32
 
23
- if Rails.env.development?
24
- Econfig.use_keychain "thanks-a-latte"
25
- end
33
+ ``` ruby
34
+ Econfig.use_keychain "thanks-a-latte", name: "project name"
26
35
  ```
27
36
 
28
- That's it! You can change your configuration from the Rails console:
37
+ ## Changing configuration
38
+
39
+ Econfig::Keychain supports changing configuration by setting values, e.g. from the Rails console:
29
40
 
30
41
  ``` ruby
31
42
  MyApp.aws_access_key_id = "xyz"
32
43
  ```
33
44
 
34
- You can also edit your configuration manually using the Mellon CLI:
45
+ You can also edit your configuration with your `$EDITOR` manually using the Mellon CLI:
35
46
 
36
47
  ```
37
48
  bundle exec mellon edit myapp
38
49
  ```
39
50
 
51
+ Finally, you can also edit the keychain entry manually using Keychain Access.
52
+
40
53
  # License
41
54
 
42
55
  MIT. See LICENSE.
data/Rakefile CHANGED
@@ -3,4 +3,8 @@ require "bundler/gem_tasks"
3
3
  require "rspec/core/rake_task"
4
4
  RSpec::Core::RakeTask.new
5
5
 
6
+ task :console do
7
+ exec "irb", "-r", "bundler/setup", "-r", "econfig-keychain"
8
+ end
9
+
6
10
  task default: :spec
@@ -17,6 +17,8 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
+ spec.required_ruby_version = "~> 2.0"
21
+
20
22
  spec.add_dependency "econfig"
21
23
  spec.add_dependency "mellon", "~> 1.0"
22
24
 
@@ -1,5 +1,5 @@
1
1
  module Econfig
2
2
  class Keychain
3
- VERSION = "1.0.1"
3
+ VERSION = "1.0.2"
4
4
  end
5
5
  end
@@ -4,28 +4,27 @@ require "econfig"
4
4
  module Econfig
5
5
  class Keychain
6
6
  def initialize(keychain, name: nil)
7
- name ||= File.basename(Econfig.root)
8
- @store = ::Mellon::Store.new(name, keychain: keychain)
9
- end
10
-
11
- def project_name
12
- @store.project_name
13
- end
14
-
15
- def keychain
16
- @store.keychain
7
+ @init = { keychain: keychain, name: name }
17
8
  end
18
9
 
19
10
  def init
20
- keychain[project_name] ||= ""
11
+ project_name = @init[:name] || File.basename(Econfig.root)
12
+ @store = ::Mellon::Store.new(project_name, keychain: @init[:keychain])
13
+ @store.keychain[@store.project_name] ||= ""
21
14
  end
22
15
 
23
16
  def get(key)
24
- @store[key]
17
+ store[key]
25
18
  end
26
19
 
27
20
  def set(key, value)
28
- @store[key] = value
21
+ store[key] = value
22
+ end
23
+
24
+ private
25
+
26
+ def store
27
+ @store or raise Econfig::UninitializedError
29
28
  end
30
29
  end
31
30
  end
@@ -2,8 +2,8 @@ require "econfig/keychain"
2
2
 
3
3
  module Econfig
4
4
  class << self
5
- def use_keychain(keychain)
6
- Econfig.instance.backends << Econfig::Keychain.new(keychain)
5
+ def use_keychain(keychain, **kwargs)
6
+ Econfig.instance.backends << Econfig::Keychain.new(keychain, **kwargs)
7
7
  end
8
8
  end
9
9
  end
@@ -8,6 +8,7 @@ Econfig.env = "test"
8
8
  describe Econfig::Keychain do
9
9
  let(:keychain_path) { File.expand_path("./osx.temporary.keychain", __dir__) }
10
10
  let(:keychain) { Mellon::Keychain.new(keychain_path) }
11
+ let(:project_name) { File.basename(Econfig.root) }
11
12
  let(:backend) { Econfig::Keychain.new(keychain) }
12
13
 
13
14
  around do |example|
@@ -20,7 +21,7 @@ describe Econfig::Keychain do
20
21
  describe "#init" do
21
22
  it "creates the note in the keychain if it does not exist" do
22
23
  Econfig.stub(root: "different")
23
- expect { backend.init }.to change { keychain[backend.project_name] }
24
+ expect { backend.init }.to change { keychain[project_name] }
24
25
  .from(nil).to("")
25
26
  end
26
27
 
@@ -30,20 +31,34 @@ describe Econfig::Keychain do
30
31
  end
31
32
  end
32
33
 
33
- describe "#get" do
34
- it "fetches an option from the keychain" do
35
- backend.get("i exist").should eq "this exist"
34
+ context "before init" do
35
+ specify "#get raises an error" do
36
+ expect { backend.get("key") }.to raise_error(Econfig::UninitializedError)
36
37
  end
37
38
 
38
- it "returns nil if option does not exist" do
39
- backend.get("does not exist").should be_nil
39
+ specify "#set raises an error" do
40
+ expect { backend.set("key", "value") }.to raise_error(Econfig::UninitializedError)
40
41
  end
41
42
  end
42
43
 
43
- describe "#set" do
44
- it "sets an option in the keychain" do
45
- backend.set("new key", "pub")
46
- backend.get("new key").should eq "pub"
44
+ context "after init" do
45
+ before { backend.init }
46
+
47
+ describe "#get" do
48
+ it "fetches an option from the keychain" do
49
+ backend.get("i exist").should eq "this exist"
50
+ end
51
+
52
+ it "returns nil if option does not exist" do
53
+ backend.get("does not exist").should be_nil
54
+ end
55
+ end
56
+
57
+ describe "#set" do
58
+ it "sets an option in the keychain" do
59
+ backend.set("new key", "pub")
60
+ backend.get("new key").should eq "pub"
61
+ end
47
62
  end
48
63
  end
49
64
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: econfig-keychain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kim Burgestrand
@@ -9,76 +9,76 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-11 00:00:00.000000000 Z
12
+ date: 2014-04-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: econfig
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: mellon
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '1.0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '1.6'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.6'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  description:
@@ -89,7 +89,7 @@ executables: []
89
89
  extensions: []
90
90
  extra_rdoc_files: []
91
91
  files:
92
- - .gitignore
92
+ - ".gitignore"
93
93
  - CHANGELOG.md
94
94
  - Gemfile
95
95
  - LICENSE
@@ -111,12 +111,12 @@ require_paths:
111
111
  - lib
112
112
  required_ruby_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - '>='
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0'
116
+ version: '2.0'
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  requirements:
119
- - - '>='
119
+ - - ">="
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0'
122
122
  requirements: []