carrierwave-scp-uploader 1.0.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 +7 -0
- data/.gitignore +18 -0
- data/README.md +19 -0
- data/carrierwave-scp-upload.gemspec +24 -0
- data/lib/carrierwave-scp-upload.rb +16 -0
- data/lib/carrierwave-scp-upload/version.rb +3 -0
- data/lib/carrierwave/storage/scp.rb +76 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5bbe6247cfa7dd3201b5673025fab5672a75001c
|
4
|
+
data.tar.gz: d8db037252dcc033466efb5b013860f7286ccb29
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 770725880f6faa53bc881bfed03b54e69bc74c6e3ba581c40943ff87597c7b2cc21e8f3ea848aa986f116cc21186a577a7692340a6271696b5026d99b461cb48
|
7
|
+
data.tar.gz: 3ab78606dd7152d7639226e3eb9cead851955f447a0deb6106842ec44c0a1f740fbddaeb951eb9bf740fd0f9ccfc137b927691ac737d4533b046932ab45e3544
|
data/.gitignore
ADDED
data/README.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# CarrierWave SCP Upload
|
2
|
+
|
3
|
+
Custom upload plugin for [CarrierWave](https://github.com/jnicklas/carrierwave/) using SCP method
|
4
|
+
|
5
|
+
## Gem
|
6
|
+
|
7
|
+
gem install carrierwave-scp-upload
|
8
|
+
|
9
|
+
## Configuration
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
CarrierWave.configure do |config|
|
13
|
+
config.storage = :scp
|
14
|
+
config.scp_host = "<host ip>"
|
15
|
+
config.scp_user = "<username>"
|
16
|
+
config.scp_options = { :password=> "<password>" }
|
17
|
+
config.scp_folder = "/var/folder"
|
18
|
+
end
|
19
|
+
```
|
@@ -0,0 +1,24 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
require "carrierwave-scp-upload/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "carrierwave-scp-uploader"
|
7
|
+
s.version = CarrierwaveScp::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Yen-Thanh Le"]
|
10
|
+
s.email = ["abc@lythanh.xyz"]
|
11
|
+
s.homepage = "https://github.com/yenthanh132/carrierwave-scp-upload"
|
12
|
+
s.summary = "SCP storage for CarrierWave."
|
13
|
+
s.description = "Custom uploader for CarrierWave lib using SCP method"
|
14
|
+
|
15
|
+
s.rubyforge_project = "carrierwave-scp-upload"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec}/*`.split("\n")
|
19
|
+
|
20
|
+
s.add_dependency "carrierwave"
|
21
|
+
s.add_dependency "net-scp"
|
22
|
+
|
23
|
+
s.add_development_dependency "rspec"
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'carrierwave'
|
2
|
+
require 'uri/open-scp'
|
3
|
+
require 'net/scp'
|
4
|
+
require 'carrierwave/storage/scp'
|
5
|
+
require 'carrierwave-scp-upload/version'
|
6
|
+
|
7
|
+
class CarrierWave::Uploader::Base
|
8
|
+
add_config :scp_host
|
9
|
+
add_config :scp_user
|
10
|
+
add_config :scp_options
|
11
|
+
add_config :scp_folder
|
12
|
+
|
13
|
+
configure do |config|
|
14
|
+
config.storage_engines[:scp] = "CarrierWave::Storage::SCP"
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module CarrierWave
|
2
|
+
module Storage
|
3
|
+
class SCP < Abstract
|
4
|
+
|
5
|
+
def store!(file)
|
6
|
+
f = CarrierWave::Storage::SCP::File.new(uploader, self, uploader.store_path)
|
7
|
+
f.store(file)
|
8
|
+
f
|
9
|
+
end
|
10
|
+
|
11
|
+
def retrieve!(identifier)
|
12
|
+
CarrierWave::Storage::SCP::File.new(uploader, self, uploader.store_path(identifier))
|
13
|
+
end
|
14
|
+
|
15
|
+
class File
|
16
|
+
attr_reader :path
|
17
|
+
|
18
|
+
def extension
|
19
|
+
path.split('.').last
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(uploader, base, path)
|
23
|
+
@uploader, @base, @path = uploader, base, path
|
24
|
+
end
|
25
|
+
|
26
|
+
def read
|
27
|
+
file
|
28
|
+
end
|
29
|
+
|
30
|
+
def size
|
31
|
+
file.length
|
32
|
+
end
|
33
|
+
|
34
|
+
def store(new_file)
|
35
|
+
Net::SSH.start(@uploader.scp_host, @uploader.scp_user, @uploader.scp_options) do |session|
|
36
|
+
new_dir = path.split('/')
|
37
|
+
new_dir.delete(new_dir[-1])
|
38
|
+
new_dir = new_dir.join('/')
|
39
|
+
session.exec! "mkdir -p #{@uploader.scp_folder}/#{new_dir}"
|
40
|
+
session.scp.upload! new_file.path, "#{@uploader.scp_folder}/#{path}", :recursive => true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def exists?
|
45
|
+
size ? true : false
|
46
|
+
end
|
47
|
+
|
48
|
+
def content_type
|
49
|
+
@content_type || file.content_type
|
50
|
+
end
|
51
|
+
|
52
|
+
def content_type=(new_content_type)
|
53
|
+
@content_type = new_content_type
|
54
|
+
end
|
55
|
+
|
56
|
+
def delete
|
57
|
+
Net::SSH.start(@uploader.scp_host, @uploader.scp_user, @uploader.scp_options) do |session|
|
58
|
+
session.exec! "rm #{@uploader.scp_folder}/#{path}"
|
59
|
+
end
|
60
|
+
rescue
|
61
|
+
end
|
62
|
+
private
|
63
|
+
|
64
|
+
def file
|
65
|
+
remote_file = nil
|
66
|
+
Net::SSH.start(@uploader.scp_host, @uploader.scp_user, @uploader.scp_options) do |session|
|
67
|
+
remote_file = session.scp.download!("#{@uploader.scp_folder}/#{path}", nil)
|
68
|
+
end
|
69
|
+
remote_file
|
70
|
+
#@file ||= open("scp://#{@uploader.scp_user}:#{@uploader.scp_options[:password]}@#{@uploader.scp_host}#{@uploader.scp_folder}/#{path}", options)
|
71
|
+
end
|
72
|
+
|
73
|
+
end #end File
|
74
|
+
end #end SCP
|
75
|
+
end
|
76
|
+
end
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: carrierwave-scp-uploader
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yen-Thanh Le
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: carrierwave
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: net-scp
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Custom uploader for CarrierWave lib using SCP method
|
56
|
+
email:
|
57
|
+
- abc@lythanh.xyz
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- README.md
|
64
|
+
- carrierwave-scp-upload.gemspec
|
65
|
+
- lib/carrierwave-scp-upload.rb
|
66
|
+
- lib/carrierwave-scp-upload/version.rb
|
67
|
+
- lib/carrierwave/storage/scp.rb
|
68
|
+
homepage: https://github.com/yenthanh132/carrierwave-scp-upload
|
69
|
+
licenses: []
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project: carrierwave-scp-upload
|
87
|
+
rubygems_version: 2.4.5
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: SCP storage for CarrierWave.
|
91
|
+
test_files: []
|