multi_dir 0.1.0 → 0.2.0
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 +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +11 -6
- data/lib/multi_dir/pathname_patch.rb +22 -2
- data/lib/multi_dir/version.rb +1 -1
- data/spec/multi_dir/pathname_patch_spec.rb +33 -0
- data/spec/multi_dir/paths_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a661f08fe1eebf8f311f6fffa0d225eef0c8a24
|
4
|
+
data.tar.gz: c07c917317858364e294a62f344ff15e60fd7374
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe67c221549fdda941a9d4ba22995e41144863c4bf693be865f81c943f779497995af203ff2d25fa1db3cca12ae8ebba15bb81b5a1a9851bc6444c83ec343323
|
7
|
+
data.tar.gz: f91ce4c2dfa26cd2fd42f9215c855f588b0b2ecc666cfa714f697a0fdb07c7319aee15a20a9242f858670673ec2480b7e4e8e5bbcd978c85ff1d7ee779465348
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# MultiDir
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/multi_dir)
|
3
4
|
[](https://travis-ci.org/jgraichen/multi_dir)
|
5
|
+
[](https://coveralls.io/r/jgraichen/multi_dir?branch=master)
|
6
|
+
[](https://codeclimate.com/github/jgraichen/multi_dir)
|
7
|
+
[](https://gemnasium.com/jgraichen/multi_dir)
|
4
8
|
|
5
9
|
**MultiDir** allow libraries and frameworks to request paths in a semantic
|
6
10
|
way. This allows administrators to define real paths in one global
|
@@ -10,7 +14,7 @@ No more `Rails.root.join *%w(tmp uploaded)` anymore. Give administrators the
|
|
10
14
|
freedom to link the temp directory to `/tmp/myapp` or any other system
|
11
15
|
specific place by just using `MultiDir.tmp.join 'uploaded'`.
|
12
16
|
|
13
|
-
*Note
|
17
|
+
*Note:* ***MultiDir*** *as a library is still under development but the concept sounds nice.*
|
14
18
|
|
15
19
|
## Installation
|
16
20
|
|
@@ -30,7 +34,7 @@ Or install it yourself as:
|
|
30
34
|
|
31
35
|
### For All
|
32
36
|
|
33
|
-
MultiDir allows to define any semantic path your app, library or framework may
|
37
|
+
**MultiDir** allows to define any semantic path your app, library or framework may
|
34
38
|
need. By default the following paths are specified:
|
35
39
|
|
36
40
|
```
|
@@ -78,12 +82,13 @@ See the following examples:
|
|
78
82
|
MultiDir.cache.join *%(pdfgen page5.pdf) # => "cache/pdfgen/page5.pdf"
|
79
83
|
|
80
84
|
# Request a file with a temporary name
|
81
|
-
MultiDir.tmp.
|
85
|
+
MultiDir.tmp.tempname ['basename', '.jpg'] # => "tmp/basename20130519-11982-tzda0r.jpg"
|
82
86
|
|
83
87
|
# Get list of files in a additional configurable directory
|
84
|
-
MultiDir.cache[:uploads].glob '
|
85
|
-
|
86
|
-
|
88
|
+
MultiDir.cache[:uploads].glob 'path/**', '*.zip' # This allows admins to
|
89
|
+
# configure a special path for :uploads
|
90
|
+
# that if not given will be placed in 'cache'.
|
91
|
+
# => ["/media/uploads/a/virus.zip", "/media/uploads/attachments/ppt.zip"]
|
87
92
|
```
|
88
93
|
|
89
94
|
You can even define your own new top level *semantic path*:
|
@@ -5,8 +5,8 @@ module MultiDir
|
|
5
5
|
#
|
6
6
|
module PathnamePatch
|
7
7
|
|
8
|
-
def glob(
|
9
|
-
Dir.glob File.join(to_s,
|
8
|
+
def glob(*patterns)
|
9
|
+
Dir.glob File.join(to_s, *patterns)
|
10
10
|
end
|
11
11
|
|
12
12
|
def [](path)
|
@@ -16,6 +16,26 @@ module MultiDir
|
|
16
16
|
|
17
17
|
join path.to_s
|
18
18
|
end
|
19
|
+
|
20
|
+
def tempname(prefix_suffix, n = nil)
|
21
|
+
join mktmpname prefix_suffix, n
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def mktmpname(prefix_suffix, n = nil)
|
26
|
+
case prefix_suffix
|
27
|
+
when Array
|
28
|
+
prefix = prefix_suffix[0].to_s
|
29
|
+
suffix = prefix_suffix[1].to_s
|
30
|
+
else
|
31
|
+
prefix = prefix_suffix.to_s
|
32
|
+
end
|
33
|
+
t = Time.now.strftime("%Y%m%d")
|
34
|
+
path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
|
35
|
+
path << "-#{n}" if n
|
36
|
+
path << suffix if suffix
|
37
|
+
path
|
38
|
+
end
|
19
39
|
end
|
20
40
|
|
21
41
|
::Pathname.send :include, PathnamePatch
|
data/lib/multi_dir/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MultiDir::PathnamePatch do
|
4
|
+
before { MultiDir::Paths.load_yaml 'spec/support/multi_dir.yml' }
|
5
|
+
|
6
|
+
describe '#[]' do
|
7
|
+
context 'with not configured semantic path' do
|
8
|
+
it 'should return joined path' do
|
9
|
+
expect( MultiDir.tmp[:not_configured_sym].to_s ).to be == '/tmp/myapp/not_configured_sym'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'with configured semantic path' do
|
14
|
+
it 'should return configured path' do
|
15
|
+
expect( MultiDir.tmp[:uploads].to_s ).to be == '/mnt/nfs/storage0/files'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#glob' do
|
21
|
+
it 'should glob directory with joined pattern' do
|
22
|
+
Dir.should_receive(:glob).with('/tmp/myapp/path/**/*.rb').and_return(%w(a.rb b.rb))
|
23
|
+
|
24
|
+
expect( MultiDir.tmp.glob 'path', '**', '*.rb' ).to be == %w(a.rb b.rb)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#tempname' do
|
29
|
+
it 'should create temp name on path' do
|
30
|
+
expect( MultiDir.tmp.tempname(%w(abc .jpg)).to_s ).to be =~ /\A\/tmp\/myapp\/abc\d+-\d+-\w+\.jpg\z/
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi_dir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -90,6 +90,7 @@ extra_rdoc_files: []
|
|
90
90
|
files:
|
91
91
|
- .gitignore
|
92
92
|
- .travis.yml
|
93
|
+
- CHANGELOG.md
|
93
94
|
- Gemfile
|
94
95
|
- LICENSE.txt
|
95
96
|
- README.md
|
@@ -99,6 +100,7 @@ files:
|
|
99
100
|
- lib/multi_dir/paths.rb
|
100
101
|
- lib/multi_dir/version.rb
|
101
102
|
- multi_dir.gemspec
|
103
|
+
- spec/multi_dir/pathname_patch_spec.rb
|
102
104
|
- spec/multi_dir/paths_spec.rb
|
103
105
|
- spec/multi_dir_spec.rb
|
104
106
|
- spec/spec_helper.rb
|
@@ -130,6 +132,7 @@ specification_version: 4
|
|
130
132
|
summary: Library for semantic path configuration to make developers and operators
|
131
133
|
happy.
|
132
134
|
test_files:
|
135
|
+
- spec/multi_dir/pathname_patch_spec.rb
|
133
136
|
- spec/multi_dir/paths_spec.rb
|
134
137
|
- spec/multi_dir_spec.rb
|
135
138
|
- spec/spec_helper.rb
|