blobsterix 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.txt +4 -0
- data/README.md +27 -20
- data/blobsterix.gemspec +3 -2
- data/lib/blobsterix/version.rb +1 -1
- metadata +146 -182
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5377ce878e40d72b97327de2e0164016c87d09ae
|
4
|
+
data.tar.gz: bb0e8f0e5beb71ab33092e119d8d579786ceda9c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5399a5373e515cee0546bfd946f59ba2eaa3a2d4ef6da42e3c8d6f47307c9aa00af86d9ffc45f10076620d71f670dc0b73b0abe1de9436b772c7dff4fb62e3f7
|
7
|
+
data.tar.gz: d72731cb475cb077adc0b45f8c36162c7b0ed0c9f8e04f6c91d0d9e81be8e5a610e4d4c1899c0d3f03c5b73c082c2dcff1c902d21196447fc48316f6df2ca60e
|
data/CHANGELOG.txt
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
= 0.0.10
|
2
|
+
* Adding ruby dependency to gemfile
|
3
|
+
= 0.0.9
|
4
|
+
= 0.0.8
|
1
5
|
= 0.0.7
|
2
6
|
* now uses blobaccess to access all data in the transformation manager
|
3
7
|
cache and storage are now hidden and are used in the background accordingly. allows the system to prevent unneeded caching
|
data/README.md
CHANGED
@@ -1,15 +1,31 @@
|
|
1
1
|
# Blobsterix
|
2
2
|
|
3
3
|
|
4
|
-
#
|
5
|
-
Use at least ruby-2.0.0-p451 to ensure thread safety (reference: https://github.com/eventmachine/eventmachine/issues/457)
|
4
|
+
# What's this?
|
6
5
|
|
6
|
+
Blobsterix is a s3 compliant content server that supports on the fly transformations for its data.
|
7
|
+
Images for example can be scaled, rotated and so on before delivered to the client just by url modification.
|
8
|
+
The system also supports encryption of urls (so nobody can mess with the transformations) and transformation signing for the non s3 interface functions.
|
7
9
|
|
8
|
-
|
10
|
+
So if you are tired of:
|
11
|
+
* days of migration just to introduce a new size of an image
|
12
|
+
* high bills for amazon's s3 as you also pay for the storage of all the versions of the transformed original
|
13
|
+
* lots of dependencies to modify binary files in your main app
|
14
|
+
|
15
|
+
and if you want:
|
16
|
+
* content negotiation for your images (webp or not to webp)
|
17
|
+
* on the fly transformation for your images and other binary formats with caching
|
18
|
+
|
19
|
+
Blobsterix might be your friend.
|
9
20
|
|
10
21
|
# Install
|
11
22
|
|
12
|
-
|
23
|
+
Simply run
|
24
|
+
|
25
|
+
gem install blobsterix
|
26
|
+
|
27
|
+
This will install blobsterix with all its dependencies. IT requires at least ruby version 2.0.0-p451 (reference: https://github.com/eventmachine/eventmachine/issues/457).
|
28
|
+
Some binary dependencies are needed for the transformation pipeline not for the server itself. If you have your own transformations you might not need these:
|
13
29
|
|
14
30
|
* Setup binary dependencies
|
15
31
|
* Webp
|
@@ -18,27 +34,16 @@ Blobsterix is a s3 compliant content server that supports on the fly transformat
|
|
18
34
|
- OR make sure you have a cwbep script that behaves the right way
|
19
35
|
* MiniMagick
|
20
36
|
sudo apt-get install imagemagick
|
21
|
-
* VIPS(deprecated)
|
22
|
-
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libvips-dev
|
23
37
|
* lightpd config(not needed):
|
24
38
|
sudo apt-get install libpcre3-dev libbz2-dev libglib2.0-dev
|
25
39
|
* ASCII Art (optional)
|
26
40
|
sudo apt-get install jp2a
|
27
41
|
|
28
|
-
* Setup ruby
|
29
|
-
- bundle install
|
30
|
-
|
31
42
|
# Usage
|
32
43
|
|
33
|
-
To install blobsterix simply do a:
|
34
|
-
|
35
|
-
* gem install blobsterix
|
36
|
-
|
37
|
-
This will install blobsterix with all its dependencies. After that you have to install the binary dependecies which are written above. Those are needed for the transformation pipeline not for the server itself. If you have your own transformations you might not need thoose.
|
38
|
-
|
39
44
|
Now the server is basicly ready to run with
|
40
45
|
|
41
|
-
|
46
|
+
blobsterix server
|
42
47
|
|
43
48
|
This will run the server in the current directory which will create a contents and a cache folder uppon the first request that needs them. If this is enough you are basicly done and you can use the server. When you need more control over the server you will have to create a server configuration. For this process there are generators shipped with blobsterix.
|
44
49
|
|
@@ -70,6 +75,8 @@ Check the amazon s3 specs for more information. It only supports the REST api wi
|
|
70
75
|
* put file into bucket
|
71
76
|
* delete file from bucket
|
72
77
|
|
78
|
+
The s3 interface itself is unsecured and should not be visible to the outside.
|
79
|
+
|
73
80
|
## Blob interface
|
74
81
|
|
75
82
|
The blob interface is reachable at
|
@@ -91,8 +98,8 @@ The trafo is optional the bucket and file are not. The blob interface does not a
|
|
91
98
|
|
92
99
|
To setup a special server change into and empty directory:
|
93
100
|
|
94
|
-
|
95
|
-
|
101
|
+
mkdir special-blobsterix
|
102
|
+
blobsterix generate init special-blobsterix
|
96
103
|
|
97
104
|
This will copy a base template into special-blobsterix. Now you can checkout the generated config files for documentation on how to change things.
|
98
105
|
|
@@ -100,7 +107,7 @@ This will copy a base template into special-blobsterix. Now you can checkout the
|
|
100
107
|
|
101
108
|
The biggest strength of the system is it supports custom transformations without much coding required. To use a custom transformation you first have to setup a configuration as explained in the step before. Then you can use transformation generator to create a new transformation with
|
102
109
|
|
103
|
-
|
110
|
+
blobsterix generate transformator CropToFace
|
104
111
|
|
105
112
|
This will generate a new transforamtion in the transformators subdirectory of your server configuration. The transformation has standard parameters set which already make the transformation work. There are five functions:
|
106
113
|
|
@@ -117,6 +124,6 @@ Now the 50 would be passed as value with type string. The transformation has to
|
|
117
124
|
|
118
125
|
Blobsterix also supports different kinds of backend storages. For this purpose you can again use a generator to create template storage system with:
|
119
126
|
|
120
|
-
|
127
|
+
blobsterix generate storage MyBackend
|
121
128
|
|
122
129
|
This will again generate a working empty storage that doesn't allow saving or retriving of data. To see a working storage implementation checkout the FileSystem storage in the source code. Now you will see that all data there is returned as a BlobMetaData or better in the FileSystem storage as a FileSystemMetaData. As long as your implementation supports the interface everything should work like expected.
|
data/blobsterix.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.email = ["suddani@googlemail.com"]
|
8
8
|
gem.description = "BlobServer"
|
9
9
|
gem.summary = "BlobServer"
|
10
|
-
gem.homepage = "
|
10
|
+
gem.homepage = "https://github.com/experteer/blobsterix"
|
11
11
|
gem.license = "MIT License"
|
12
12
|
|
13
13
|
gem.files = `git ls-files`.split($\).select{|filename|
|
@@ -22,7 +22,8 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.name = "blobsterix"
|
23
23
|
gem.require_paths = ["lib"]
|
24
24
|
gem.version = Blobsterix::VERSION
|
25
|
-
|
25
|
+
gem.required_ruby_version = ">= 2.0.0.451"
|
26
|
+
|
26
27
|
|
27
28
|
gem.add_dependency "json", "~> 1.8.1"
|
28
29
|
gem.add_dependency "goliath", "~> 1.0.3"
|
data/lib/blobsterix/version.rb
CHANGED
metadata
CHANGED
@@ -1,199 +1,177 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: blobsterix
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 9
|
10
|
-
version: 0.0.9
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.10
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Daniel Sudmann
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-04-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
22
14
|
name: json
|
23
|
-
|
24
|
-
|
25
|
-
none: false
|
26
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
27
17
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 53
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 8
|
33
|
-
- 1
|
18
|
+
- !ruby/object:Gem::Version
|
34
19
|
version: 1.8.1
|
35
20
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: goliath
|
39
21
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.8.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: goliath
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
43
31
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 17
|
46
|
-
segments:
|
47
|
-
- 1
|
48
|
-
- 0
|
49
|
-
- 3
|
32
|
+
- !ruby/object:Gem::Version
|
50
33
|
version: 1.0.3
|
51
34
|
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: journey
|
55
35
|
prerelease: false
|
56
|
-
|
57
|
-
|
58
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: journey
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
59
45
|
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
hash: 31
|
62
|
-
segments:
|
63
|
-
- 1
|
64
|
-
- 0
|
65
|
-
- 4
|
46
|
+
- !ruby/object:Gem::Version
|
66
47
|
version: 1.0.4
|
67
48
|
type: :runtime
|
68
|
-
version_requirements: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: nokogiri
|
71
49
|
prerelease: false
|
72
|
-
|
73
|
-
|
74
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: nokogiri
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
75
59
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
hash: 13
|
78
|
-
segments:
|
79
|
-
- 1
|
80
|
-
- 6
|
81
|
-
- 1
|
60
|
+
- !ruby/object:Gem::Version
|
82
61
|
version: 1.6.1
|
83
62
|
type: :runtime
|
84
|
-
version_requirements: *id004
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: ruby-webp
|
87
63
|
prerelease: false
|
88
|
-
|
89
|
-
|
90
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.6.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ruby-webp
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
91
73
|
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
hash: 27
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
- 1
|
97
|
-
- 0
|
74
|
+
- !ruby/object:Gem::Version
|
98
75
|
version: 0.1.0
|
99
76
|
type: :runtime
|
100
|
-
version_requirements: *id005
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: mini_magick
|
103
77
|
prerelease: false
|
104
|
-
|
105
|
-
|
106
|
-
requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
107
80
|
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.1.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mini_magick
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
114
89
|
version: 3.5.0
|
115
90
|
type: :runtime
|
116
|
-
version_requirements: *id006
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: rspec
|
119
91
|
prerelease: false
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.5.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
129
104
|
type: :development
|
130
|
-
version_requirements: *id007
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: rspec-core
|
133
105
|
prerelease: false
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec-core
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
143
118
|
type: :development
|
144
|
-
version_requirements: *id008
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
|
-
name: rspec-expectations
|
147
119
|
prerelease: false
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec-expectations
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
157
132
|
type: :development
|
158
|
-
version_requirements: *id009
|
159
|
-
- !ruby/object:Gem::Dependency
|
160
|
-
name: rspec-mocks
|
161
133
|
prerelease: false
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec-mocks
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
171
146
|
type: :development
|
172
|
-
version_requirements: *id010
|
173
|
-
- !ruby/object:Gem::Dependency
|
174
|
-
name: pry
|
175
147
|
prerelease: false
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: pry
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
185
160
|
type: :development
|
186
|
-
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
187
167
|
description: BlobServer
|
188
|
-
email:
|
168
|
+
email:
|
189
169
|
- suddani@googlemail.com
|
190
|
-
executables:
|
170
|
+
executables:
|
191
171
|
- blobsterix
|
192
172
|
extensions: []
|
193
|
-
|
194
173
|
extra_rdoc_files: []
|
195
|
-
|
196
|
-
files:
|
174
|
+
files:
|
197
175
|
- .gitignore
|
198
176
|
- CHANGELOG.txt
|
199
177
|
- Gemfile
|
@@ -276,45 +254,31 @@ files:
|
|
276
254
|
- templates/transformation_template.rb
|
277
255
|
- templates/views/error_page.erb
|
278
256
|
- templates/views/status_page.erb
|
279
|
-
|
280
|
-
|
281
|
-
licenses:
|
257
|
+
homepage: https://github.com/experteer/blobsterix
|
258
|
+
licenses:
|
282
259
|
- MIT License
|
260
|
+
metadata: {}
|
283
261
|
post_install_message:
|
284
262
|
rdoc_options: []
|
285
|
-
|
286
|
-
require_paths:
|
263
|
+
require_paths:
|
287
264
|
- lib
|
288
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
- p
|
299
|
-
- 451
|
300
|
-
version: 2.0.0.p451
|
301
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
302
|
-
none: false
|
303
|
-
requirements:
|
304
|
-
- - ">="
|
305
|
-
- !ruby/object:Gem::Version
|
306
|
-
hash: 3
|
307
|
-
segments:
|
308
|
-
- 0
|
309
|
-
version: "0"
|
265
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
266
|
+
requirements:
|
267
|
+
- - '>='
|
268
|
+
- !ruby/object:Gem::Version
|
269
|
+
version: 2.0.0.451
|
270
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
|
+
requirements:
|
272
|
+
- - '>='
|
273
|
+
- !ruby/object:Gem::Version
|
274
|
+
version: '0'
|
310
275
|
requirements: []
|
311
|
-
|
312
276
|
rubyforge_project:
|
313
|
-
rubygems_version:
|
277
|
+
rubygems_version: 2.0.14
|
314
278
|
signing_key:
|
315
|
-
specification_version:
|
279
|
+
specification_version: 4
|
316
280
|
summary: BlobServer
|
317
|
-
test_files:
|
281
|
+
test_files:
|
318
282
|
- spec/lib/blob/blob_api_spec.rb
|
319
283
|
- spec/lib/helper/blob_access_spec.rb
|
320
284
|
- spec/lib/s3/s3_api_spec.rb
|