tori 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/tori/backend/filesystem.rb +12 -3
- data/lib/tori/define.rb +5 -9
- data/lib/tori/file.rb +28 -0
- data/lib/tori/rails.rb +5 -8
- data/lib/tori/version.rb +1 -1
- data/lib/tori.rb +3 -2
- data/test/test_tori_backend_filesystem.rb +23 -5
- data/test/test_tori_file.rb +40 -0
- data/test/test_tori_method_definition.rb +0 -4
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0767923af262a5dce13b472e5634d2a9d0bfffde
|
4
|
+
data.tar.gz: dc11c7a9aa7c1c6404f87423971b273aaf22df8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc9a89e774b0e2749a2f285895f40800dbbd89f7a193a6ff96838e2ec791d639ba3a8cee45b0cf1ee8fa3903cb28bcef8d16acbf344da1559a4fea4001e55c5e
|
7
|
+
data.tar.gz: 1b206a55b212aa7a415f9feb696eb1c5d79cf8cbd72777e25cbb309f81cdb6eef240512e92864593b8b307e040a638efebc95f89ebd7c377038ad2b1aeb062bd
|
data/.gitignore
CHANGED
@@ -1,17 +1,26 @@
|
|
1
1
|
module Tori
|
2
2
|
module Backend
|
3
3
|
class FileSystem
|
4
|
+
attr_accessor :root
|
4
5
|
def initialize(root)
|
5
6
|
@root = root
|
6
7
|
FileUtils.mkdir_p(@root.to_s)
|
7
8
|
end
|
8
9
|
|
9
|
-
def copy(
|
10
|
-
IO.copy_stream(
|
10
|
+
def copy(form_path, to_filename)
|
11
|
+
IO.copy_stream(form_path.to_s, @root.join(to_filename.to_s))
|
11
12
|
end
|
12
13
|
|
13
14
|
def delete(filename)
|
14
|
-
File.unlink @root.join(filename)
|
15
|
+
::File.unlink @root.join(filename.to_s)
|
16
|
+
end
|
17
|
+
|
18
|
+
def exist?(filename)
|
19
|
+
::File.exist? @root.join(filename.to_s)
|
20
|
+
end
|
21
|
+
|
22
|
+
def read(filename)
|
23
|
+
::File.read @root.join(filename.to_s)
|
15
24
|
end
|
16
25
|
end
|
17
26
|
end
|
data/lib/tori/define.rb
CHANGED
@@ -1,20 +1,16 @@
|
|
1
1
|
module Tori
|
2
2
|
module Define
|
3
3
|
def tori(name)
|
4
|
-
|
5
|
-
name_ivar = "@#{name}".to_sym
|
6
|
-
name_hash_ivar = "@#{name}_hash".to_sym
|
4
|
+
name_file_ivar = "@#{name}_file".to_sym
|
7
5
|
|
8
6
|
define_method(name) do
|
9
|
-
instance_variable_get
|
7
|
+
ivar = instance_variable_get name_file_ivar
|
8
|
+
instance_variable_set name_file_ivar, ivar || File.new(self)
|
10
9
|
end
|
11
10
|
|
12
11
|
define_method("#{name}=") do |uploader|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
define_method(name_hash_get) do
|
17
|
-
Tori.config.filename_callback.call(self)
|
12
|
+
file = File.new(self, uploader)
|
13
|
+
instance_variable_set name_file_ivar, file
|
18
14
|
end
|
19
15
|
end
|
20
16
|
end
|
data/lib/tori/file.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Tori
|
2
|
+
class File
|
3
|
+
attr_accessor :from
|
4
|
+
|
5
|
+
def initialize(model, from = nil)
|
6
|
+
@model = model
|
7
|
+
@from = from
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_s
|
11
|
+
Tori.config.filename_callback.call(@model)
|
12
|
+
end
|
13
|
+
|
14
|
+
def exist?
|
15
|
+
Tori.config.backend.exist?(to_s)
|
16
|
+
end
|
17
|
+
|
18
|
+
def copy?
|
19
|
+
!@model.nil? && !@from.nil? && @from.respond_to?(:path) && 0 < to_s.length
|
20
|
+
rescue NameError => e
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def read
|
25
|
+
Tori.config.backend.read(to_s)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/tori/rails.rb
CHANGED
@@ -9,22 +9,19 @@ module Tori
|
|
9
9
|
#
|
10
10
|
# @example:
|
11
11
|
# class Photo < ActiveRecord::Base
|
12
|
-
# tori :image
|
12
|
+
# tori :image
|
13
13
|
# end
|
14
14
|
def tori(name)
|
15
15
|
super
|
16
16
|
|
17
|
-
name_hash_get = "#{name}_hash".to_sym
|
18
|
-
|
19
17
|
after_save do
|
20
|
-
|
21
|
-
|
22
|
-
Tori.config.backend.copy(uploader.path, filename) if uploader && filename
|
18
|
+
file = __send__ name
|
19
|
+
Tori.config.backend.copy(file.from.path, file.to_s) if file.from && file.copy?
|
23
20
|
end
|
24
21
|
|
25
22
|
after_destroy do
|
26
|
-
|
27
|
-
Tori.config.backend.delete(
|
23
|
+
file = __send__ name
|
24
|
+
Tori.config.backend.delete(file.to_s) if file.exist?
|
28
25
|
end
|
29
26
|
end
|
30
27
|
end
|
data/lib/tori/version.rb
CHANGED
data/lib/tori.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'tori/backend/filesystem'
|
2
2
|
require 'tori/config'
|
3
3
|
require 'tori/define'
|
4
|
+
require 'tori/file'
|
4
5
|
require 'tori/version'
|
5
6
|
require 'pathname'
|
6
|
-
require 'digest/
|
7
|
+
require 'digest/sha1'
|
7
8
|
require "fileutils"
|
8
9
|
|
9
10
|
module Tori
|
@@ -21,7 +22,7 @@ module Tori
|
|
21
22
|
# It's call when decide filename hash.
|
22
23
|
# `filename_callback` must be have `call` method.
|
23
24
|
config.filename_callback = ->(model) do
|
24
|
-
Digest::
|
25
|
+
Digest::SHA1.hexdigest "#{model.class.name}/#{model.id}"
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -3,15 +3,33 @@ require 'test_helper'
|
|
3
3
|
class TestToriBackendFileSystem < Test::Unit::TestCase
|
4
4
|
class Uploader
|
5
5
|
def path
|
6
|
-
"/tmp/
|
6
|
+
"test/tmp/uploader"
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
path = Pathname("tmp/tori/
|
12
|
-
|
10
|
+
setup do
|
11
|
+
path = Pathname("test/tmp/tori/store")
|
12
|
+
@filesystem = Tori::Backend::FileSystem.new(path)
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
+
teardown do
|
16
|
+
FileUtils.rm_rf("test/tmp")
|
17
|
+
end
|
18
|
+
|
19
|
+
test "#initialize" do
|
20
|
+
assert_instance_of Tori::Backend::FileSystem, @filesystem
|
15
21
|
assert_raise(ArgumentError){ Tori::Backend::FileSystem.new }
|
16
22
|
end
|
23
|
+
|
24
|
+
test "#exist?" do
|
25
|
+
assert { true == @filesystem.exist?(".") }
|
26
|
+
assert { false == @filesystem.exist?("nothing_file") }
|
27
|
+
end
|
28
|
+
|
29
|
+
test "#read" do
|
30
|
+
FileUtils.touch @filesystem.root.join("readfile")
|
31
|
+
assert { "" == @filesystem.read("readfile") }
|
32
|
+
File.unlink @filesystem.root.join("readfile")
|
33
|
+
assert_raise(Errno::ENOENT){ @filesystem.read("nothing_file") }
|
34
|
+
end
|
17
35
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestToriDefine < Test::Unit::TestCase
|
4
|
+
setup do
|
5
|
+
@orig = Tori.config.filename_callback
|
6
|
+
Tori.config.filename_callback = ->(model){
|
7
|
+
model
|
8
|
+
}
|
9
|
+
Tori.config.backend = Tori::Backend::FileSystem.new Pathname("test").join("tmp")
|
10
|
+
end
|
11
|
+
|
12
|
+
teardown do
|
13
|
+
Tori.config.filename_callback = @orig
|
14
|
+
FileUtils.rm_rf("test/tmp")
|
15
|
+
end
|
16
|
+
|
17
|
+
class Dammy
|
18
|
+
def path
|
19
|
+
"path"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
test "#initialize" do
|
24
|
+
assert_instance_of Tori::File, Tori::File.new(nil, nil)
|
25
|
+
end
|
26
|
+
|
27
|
+
test "#to_s" do
|
28
|
+
assert { "test" == Tori::File.new("test", nil).to_s }
|
29
|
+
end
|
30
|
+
|
31
|
+
test "#exist?" do
|
32
|
+
assert { true == Tori::File.new(__FILE__, nil).exist? }
|
33
|
+
assert { false == Tori::File.new("nothing_file", nil).exist? }
|
34
|
+
end
|
35
|
+
|
36
|
+
test "#copy?" do
|
37
|
+
assert { false == Tori::File.new(__FILE__, nil).copy? }
|
38
|
+
assert { true == Tori::File.new(__FILE__, Dammy.new).copy? }
|
39
|
+
end
|
40
|
+
end
|
@@ -4,14 +4,10 @@ class TestToriDefine < Test::Unit::TestCase
|
|
4
4
|
class Dammy
|
5
5
|
extend Tori::Define
|
6
6
|
tori :test_image
|
7
|
-
def id
|
8
|
-
"dammy"
|
9
|
-
end
|
10
7
|
end
|
11
8
|
|
12
9
|
test "#tori" do
|
13
10
|
assert_respond_to Dammy.new, :test_image
|
14
11
|
assert_respond_to Dammy.new, :test_image=
|
15
|
-
assert_respond_to Dammy.new, :test_image_hash
|
16
12
|
end
|
17
13
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tori
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ksss
|
@@ -68,12 +68,14 @@ files:
|
|
68
68
|
- lib/tori/backend/filesystem.rb
|
69
69
|
- lib/tori/config.rb
|
70
70
|
- lib/tori/define.rb
|
71
|
+
- lib/tori/file.rb
|
71
72
|
- lib/tori/rails.rb
|
72
73
|
- lib/tori/version.rb
|
73
74
|
- test/test_helper.rb
|
74
75
|
- test/test_tori.rb
|
75
76
|
- test/test_tori_backend_filesystem.rb
|
76
77
|
- test/test_tori_config.rb
|
78
|
+
- test/test_tori_file.rb
|
77
79
|
- test/test_tori_method_definition.rb
|
78
80
|
- tori.gemspec
|
79
81
|
homepage: https://github.com/ksss/tori
|
@@ -105,4 +107,5 @@ test_files:
|
|
105
107
|
- test/test_tori.rb
|
106
108
|
- test/test_tori_backend_filesystem.rb
|
107
109
|
- test/test_tori_config.rb
|
110
|
+
- test/test_tori_file.rb
|
108
111
|
- test/test_tori_method_definition.rb
|